Rhino Mocks - Difference between GenerateStub<T> & GenerateMock<T>

chugh97 picture chugh97 · Mar 29, 2010 · Viewed 14.6k times · Source

Can any of the Rhino experts explain me by giving a suitable example of the difference between the above methods on the MockRepository class (Rhino Mocks framework).

Where should one use Stub over Mock method or otherwise?

Answer

Sam Holder picture Sam Holder · Mar 29, 2010

you should use a mock when you are going to verify that something happened on the object, like a method was called. You should use a stub when you just want the object to be involved in the test to return a value but it is not the thing you are testing. A stub which does not have a expectation fulfilled can never fail a test.

I think the general rule should be that you should only ever have a single mock object in a test, but may have several stubs which provide information to the mock object. I believe that more than 1 mock in a test is a code smell.

Although not a Rhino example Martin Fowler has a description of the difference

Also this question might be useful as might this one