最佳答案
我还没有充分使用这个并且通常使用模拟,但是我想知道这两者之间的区别是什么,以及何时在 Rhino Mocks 上使用一个或另一个。
更新:
我还在 Ayende 的原话中找到了问题的答案:
存根和模拟之间的区别
您可以在本文中获得这些术语的实际定义: 嘲笑不是存根。我想从犀牛模仿者的角度来关注这个差异。
模拟对象是我们可以设置期望的对象,它将验证预期的操作确实发生了。存根是一个对象,您可以使用它来将代码传递给测试中的代码。您可以对它设置期望,因此它会以某些方式运行,但是这些期望永远不会被验证。存根的属性会自动表现得像普通属性一样,您不能对它们设置期望值。
如果希望验证测试代码的行为,则将使用带有适当期望的模拟,并验证该行为。如果您只想传递一个可能需要以某种方式执行的值,但这个值不是本测试的重点,那么您将使用存根。
重要提示: 存根永远不会导致测试失败。