为什么Rhino Stubs允许我对它们设定期望?

时间:2016-05-18 16:31:23

标签: c# .net unit-testing mocking rhino-mocks

这个问题澄清了Rhino中模拟和存根之间的概念差异:What are the differences between mocks and stubs on Rhino Mocks?

然而,我很遗憾为什么Rhino Stub对象提供诸如.Expect.VerifyAllExpectations()之类的方法时,这些方法似乎什么都不做。为什么mock / stub对象似乎提供相同的接口?

它让我觉得我错过了一些基本的东西 - 或者它只是一个实施怪癖?

1 个答案:

答案 0 :(得分:2)

这种行为的原因是基于IntelliSense限制(关于扩展方法)+ Rhinomocks设计(+断言上的错误),正如我解释here

以下示例显示Expect方法在存根上只有Stub方法。

public class Foo
{
    public virtual string DoSomthing()
    {
        return String.Empty;
    }
}

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {

        var f = MockRepository.GenerateStub<Foo>();

        f.Expect(x => x.DoSomthing())
         .Return("2");

        f.VerifyAllExpectations();

    }
}

如果你执行上面的例子,你会发现测试不会失败(虽然DoSomthing从未被调用过......)