java - 共享Spock模拟验证

标签 java mocking spock

假设我正在测试一堆 servlet,并且我想确保其中一些(不是全部)设置了正确的 header 。我可以这样做:

then:
1 * response.setHeader('Cache-Control', 'public, max-age=' + 3600)
1 * response.setHeader('X-Foo', 'bar')

如何将它们放入方法中(在父类(super class)或实用程序中),这样我就可以这样做:

then:
verifyCorrectHeader()

最佳答案

根据Spock Documentation您可以为此使用显式交互 block :

def 'the test'() {
    when:
    //...
    then:
    interaction verifyCorrectHeader
}

def verifyCorrectHeader = {
    1 * response.setHeader('Cache-Control', 'public, max-age=' + 3600)
    1 * response.setHeader('X-Foo', 'bar')
}

public void interaction(Closure block): Encloses one or more interaction definitions in a then block...

参见MockingApi.interaction(Closure block)详细说明和更多示例的文档。

关于java - 共享Spock模拟验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41781236/

相关文章:

java - 如何在spock测试中模拟私有(private)方法的返回值

java - apache lucene 在文件路径上索引和搜索

java - 将新项目添加到现有项目 android 应用程序(如何移动到下一个 Activity )

c# - 'System.Web.Mvc.ViewEngines' 的类型初始值设定项抛出异常

spring - 用另一个上下文中的模拟版本替换一个上下文中的 spring bean

grails - 如何在Spock中使用Mock在Grails中进行测试?

java - Spock rightShift( mock )运算符显然不起作用

java - 关于设计 JFrame 的建议

java - Java 的 Wysiwyg html 编辑器

javascript - 监视服务方法时 Jasmine 单元测试失败