Rhino Mocks:验证AAA语法中的所有模拟

时间:2012-11-16 06:27:19

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

当使用旧的Rhino Mocks记录重放语法时,会创建一个MockRepository实例并从那里进行所有模拟。在单元测试结束时,调用方法[MockRepository Instance] .VerifyAll()来验证所有模拟。

使用当前的AAA语法,所有模拟都是由MockRepository类上的静态方法创建的。目前,我没有找到比在测试结束时或拆除时验证每个模拟对象更好的解决方案。这比旧语法的行为更容易出错,因为有时会忘记验证新的模拟实例。

你们如何处理这个,是否有更好的方法来验证所有现有的模拟?

1 个答案:

答案 0 :(得分:4)

  

(...)有没有更好的方法来验证所有现有的模拟?

更好的方法是一次测试一件事。 也许 Rhino从 验证所有 显式验证 的转变是以这种方式完成的 - 为了促进单个事物的测试(因此,您需要进行一次验证)。

很容易意识到,需要验证多个模拟可能是因为您想要立即检查多个行为(如单个测试)。请注意,这可能是几个阶段之前非优化设计选择的结果,您可能会把它(编写测试的难度)作为警告标志。

ayende's Rhino Mocks 3.5 guide page,您将找不到一个例子,其中在一次测试中使用了两个或模拟。

在模拟和多个存根上发布

您使用存根来设置环境/要求,而不是验证您的代码。您永远不会验证存根(例如,是否调用某些方法或属性具有某些值)。 Stub本质上是您测试的代码使用的只读组件。由于这种区别,存根将永远不会使您的测试失败,而mock当然可以这样做。这就是为什么你可以在Rhino示例中看到多个存根,但总是一个模拟。