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

但是我感到困惑的是,为什么Rhino Stub对象提供诸如.Expect.VerifyAllExpectations()之类的方法却什么都没做。为什么模拟/存根对象似乎提供相同的接口?

这让我觉得我已经错过了一些基本知识,或者仅仅是一个实现上的怪癖?

最佳答案

这种行为的原因是基于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 ...)

关于c# - 为什么Rhino Stubs让我对它们设定期望?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37305338/

10-11 01:52