16

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

2 回答 2

20

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>());
于 2012-12-02T09:12:38.260 回答
2

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

于 2015-05-06T11:42:29.457 回答