rhino-mocks存根和期望有什么区别

Nik*_*kos 16 rhino-mocks mocking stub expectations stubbing

rhino-mocks存根和期望有什么区别:在我看来他们的行为完全相同?

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());
Run Code Online (Sandbox Code Playgroud)

Ale*_*iuk 20

Stub()定义存根对象的行为.
Expect()定义模拟对象的行为期望.

因此,如果您需要检查是否已调用模拟方法,则应使用Expect:

var mockContext = MockRepository.GenerateMock<IContext>();
mockContext.Expect(x => x.Find<Blog>()).Return(new List<Blog>());
Run Code Online (Sandbox Code Playgroud)

现在,在完成测试操作后,您可以验证是否符合预期:

mockContext.VerifyAllExpectations();
Run Code Online (Sandbox Code Playgroud)

如果您需要存根方法行为,您可以使用Stub():

var mockContext = MockRepository.GenerateStub<IContext>();
mockContext.Stub(x => x.Find<Blog>()).Return(new List<Blog>());
Run Code Online (Sandbox Code Playgroud)