共享 Spock 模拟验证

Shared Spock mock verification

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

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

如何将它们放入方法中(在超类或实用程序中),以便改为这样做:

then:
verifyCorrectHeader()

根据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): Encloses one or more interaction definitions in a then block...

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