groovy 每'when'一步执行操作Spock

z9ju0rcb  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(213)

我想在每一个“when”步骤都执行takeScreen()操作(Spock)。如果不在每一个“when”步骤都调用这个函数,我怎么能做到呢?

def "doSomeAction"() {
    when:
    doSmth()
    takeScreen()
    then:
    at SomePage
    when:
    doAction()
    takeScreen()
    then:
    at SomePage
}

def takeScreen(){
    //code there
}
pgpifvop

pgpifvop1#

你不能有什么大不了的
顺便说一句,假设您使用Geb + Spock来测试某种Web应用程序,并且万一takeScreen()是用来截图的,为什么不直接从GebReportingSpec派生您的Geb测试,然后使用report "After login"之类的呢?

**更新:**一个解决方法是在你的类或者全局Spock配置中添加一个小的helper方法,并在when:then:之后调用它。关于如何做的细节,请参见我的answer here。代替(或者除了)打印标签,你可以做takeScreen()应该做的任何事情,或者只是从那里调用它。如果你想在when:的开头调用它,请确保该方法像when:_ "bla"一样调用,如果你想像你的例子一样在结尾调用它,你可以在随后的then:中像then:_ "bla"一样调用它。但是我不认为你应该这样做,在你的情况下,它只是信息隐藏。测试应该准确地显示它做什么。在

相关问题