Since testing classes in isolation is a good thing it is nice to be able to have a quick dummy implementation of an interface without having to instantiate the object (and needing a reference to a concrete class). Why mocking is good can be found in many posts (see gennaGena's post here http://wiki.deltares.nl/pages/viewpage.action?pageId=5272)
...
Unfortunately our syntax gets more complex and we need to turn on the stub using
mocks.ReplayAll();
Mocking void methods
Methods without return values are easy. You get default implementation doing nothing
...
Resulting in rock->paper and paper->scissor
Helping the mock object out of its verified state
Suppose you have the System.InvalidOperationException: This action is invalid when the mock object is in verified state
You can't use a mock in Rhino Mocks after its expectations were verified, even if you're calling a method that does not make part of your expectations.
To solve this use the following:
Code Block |
---|
[TearDown]
public void TearDown()
{
mocks.BackToRecordAll();
if (testee != null)
testee.Dispose();
}
[Test]
public void Test()
{
// Expectations setup
someInterface.DoStuff();
mocks.ReplayAll();
// Replay
testee.SomeInterface = _someInterface;
testee.DoSomeOtherStuff();
mocks.VerifyAll();
}
|