Must Be Called
The MustBeCalled
method is used to assert that a call to a given method or property is made during the execution of a test.
In this article you will find various examples of the MustBeCalled
usage, for which we will be using the following class:
Assert All Calls Marked as Assertable
Let's arrange that a call must be made and then assert that. Only calls marked as assertable, i.e. with MustBeCalled
, are verified.
Here we ensure that foo.Echo
is called with argument 1, however, the call with argument 2 is not verified.
Throwing Exception When MustBeCalled Setup Is Never Invoked
When MustBeCalled
setup for some method is never invoked an exception is thrown. In the following example with foo.Execute()).MustBeCalled();
we specify that foo.Execute
is required to be called but this is never done.
In the next example is used NUnit Testing Framework.
As a result, when verifying the foo
object, MockAssertion
exception is thrown as foo.Execute
is never actually called.
Using MustBeCalled for Property Set
Let`s assume we have the following interface:
You can use MustBeCalled
when arranging property set. Here is an example:
We use DoNothing
to ignore the actual implementation when foo.Value
is set to 1
and specify that it must be set to exactly 1
in our test. Before acting with foo.Value = 1;
an exception of type MockAssertion
would be thrown when asserting foo
. After acting we verify that foo.Value
was previously set to 1
.
Using MustBeCalled When Ignoring Arguments
You can use MustBeCalled
in conjunction with IgnoreArguments
. Here is an example:
We use IgnoreArguments()
to ignore the arguments passed to foo.Execute
method and specify that it must be called. Our acting is by foo.Execute(10);
. Finally, we verify that the method is actually called with some or other argument.