Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

moq - how to verify method has not been called if the class swallows exceptions

I am trying to test a fairly complex class using Moq and am running into a problem.

I am trying to verify that a method does NOT get called, and usually this is simple to do by setting MockBehavior.Strict, but here however the class has its own error reporting mechanism so it swallows the exception being thrown by Moq.

.VerifyAll method at the end of the test also passes fine, which is really weird. Is this a bug in Moq, are there any workarounds?

I've also tried setting up a callback on this method and doing Assert.Fail inside of it, but as this gets swallowed as well, the testing framework (VS 2008 builtin test) doesn't get notified of it...

I am using Moq 2.6.1014.1. (didn't have time to upgrade to moq 3 yet)

like image 548
Robert Ivanc Avatar asked Sep 18 '09 17:09

Robert Ivanc


1 Answers

Well, this is embarrassing, I've managed to solve it.

In 3.0 you can do this:

mFMXmlC.Verify(f=>f.Put_Queue_Response(It.IsAny<Uri>(), 
                                       It.IsAny<string>(), 
                                       It.IsAny<string>(), 
                                       It.IsAny<object>()), Times.Never());

Still don't understand why VerifyAll didn't work, but this seems to fit the bill anyway. I'll leave the question up, in case someone else is looking for something similar.

like image 103
Robert Ivanc Avatar answered Sep 19 '22 00:09

Robert Ivanc