The difference between rhino-mocks stub and expect

expectationsmockingrhino-mocksstubstubbing

What is the difference between rhino-mocks stub and expect here: Looks to me that they behave exact the same?

mockContext.Stub(x => x.Find<Blog>())
    .Return(new List<Blog>() 
    { 
        new Blog() { Id = 1, Title = "Test" } 
    }.AsQueryable());

mockContext.Expect(x => x.Find<Blog>())
    .Return(new List<Blog>()
    {
        new Blog(){Id = 1,Title = "Title"},
        new Blog(){Id=2,Title = "no"}
    }.AsQueryable());

Best Answer

Stub() defines the behavior for stubbed object.
Expect() defines the behavior and the expectation for mocked object.

So if you need to check that mocked method was called you should use Expect:

var mockContext = MockRepository.GenerateMock<IContext>();
mockContext.Expect(x => x.Find<Blog>()).Return(new List<Blog>());

Now after test action complete you are able to verify that expectaions are met:

mockContext.VerifyAllExpectations();

If you need to stub method behavior you can use Stub():

var mockContext = MockRepository.GenerateStub<IContext>();
mockContext.Stub(x => x.Find<Blog>()).Return(new List<Blog>());