根据javadocs,Groovy的MockFor对象总是以验证结束。它的StubFor文档称调用验证取决于用户。我读到这说,将在MockFor对象上自动调用验证。但是,在查看在Java对象(http://svn.codehaus.org/groovy/trunk/groovy/groovy-core/src/test/groovy/mock/interceptor/MockForJavaTest.groovy)上使用MockFor的groovy示例时,它们会显式调用verify。我在测试中发现我需要做同样的事情。文档是不正确的还是我误解了。任何帮助将不胜感激。
感谢,
杰夫
答案 0 :(得分:1)
根据文档(http://groovy.codehaus.org/Groovy+Mocks),使用proxyInstance()方法(对于Groovy)或proxyDelegateInstance()方法(对于Java,如在您引用的示例中)调用的实例样式模拟确实需要一个明确的调用来验证。
这是类样式的模拟 - 通过将一个闭包传递给.use方法来调用 - 它执行隐式验证。 Mock和Stub就属于这种情况。
我对Mock和Stub之间差异的理解是,调用验证时需要验证的是什么,而不是调用它的方式。模拟验证事件以特定顺序发生,而存根仅关注事件发生一定次数。