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

时间:2012-11-30 13:16:45

标签: mocking rhino-mocks stub stubbing expectations

rhino-mocks stub和expect之间的区别是什么:看起来我们的行为完全相同?

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());

2 个答案:

答案 0 :(得分:19)

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

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

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

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

mockContext.VerifyAllExpectations();

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

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

答案 1 :(得分:2)

当你在这种情况下使用Expect作为方法x.Find()时,如果在测试期间没有调用你的方法mockContext.VerifyAllExpectations();会失败。