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