犀牛Mo:验证所有模拟为AAA语法
作者:互联网
使用旧的Rhino Mocks记录重播语法时,将创建MockRepository实例,并从那里创建所有模拟.在单元测试结束时,将调用方法[MockRepository Instance] .VerifyAll()以验证所有模拟.
使用当前的AAA语法,所有模拟都是由MockRepository类上的静态方法创建的.目前,我没有找到比在测试结束或拆卸时验证每个模拟对象更好的解决方案.这比旧语法的行为更容易出错,因为有时会忘记验证新的模拟实例.
你们如何处理?有没有更好的方法来验证所有现有的模拟?
解决方法:
(…) is there a better way to verify all existing mocks?
更好的方法是同时测试一件事.也许Rhino以这种方式完成了从全部验证到显式验证的转变-为了促进一次测试单个结果(因此,您只需要一个验证).
很容易意识到,需要验证多个模拟可能来自您想一次检查多个行为的事实(如在单个测试中).请注意,这可能是较早几个阶段进行的非最佳设计选择的结果,并且您可能会将其(很难编写测试)作为警告标志.
在ayende’s Rhino Mocks 3.5 guide page,您将找不到一个在一个测试中使用两个或多个模拟的示例.
关于模拟和多个存根问题
您使用存根设置环境/需求,而不是验证您的代码.您永远不会验证存根(例如,是否调用了某些方法或属性是否具有某些值).存根实质上是您测试的代码使用的只读组件.作为这种区别的结果,存根将永远不会使您的测试失败,而模拟当然可以使失败.这就是为什么在Rhino示例中可以看到多个存根,但总是一个模拟的原因.
标签:unit-testing,mocking,c,rhino-mocks 来源: https://codeday.me/bug/20191031/1977258.html