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());
答案 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();会失败。