共享Spock模拟验证

时间:2017-01-21 15:43:23

标签: java mocking spock

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

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

如何将它们放在方法中(在超类或实用程序中),所以我可以这样做:

then:
verifyCorrectHeader()

1 个答案:

答案 0 :(得分:1)

根据Spock Documentation,您可以使用显式交互块

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):   将一个或多个交互定义包含在then块中......

有关详细说明和更多示例,请参阅MockingApi.interaction(Closure block)文档。