我想在每一个“when”步骤都执行takeScreen()操作(Spock)。如果不在每一个“when”步骤都调用这个函数,我怎么能做到呢?
def "doSomeAction"() {
when:
doSmth()
takeScreen()
then:
at SomePage
when:
doAction()
takeScreen()
then:
at SomePage
}
def takeScreen(){
//code there
}
1条答案
按热度按时间pgpifvop1#
你不能有什么大不了的
顺便说一句,假设您使用Geb + Spock来测试某种Web应用程序,并且万一
takeScreen()
是用来截图的,为什么不直接从GebReportingSpec
派生您的Geb测试,然后使用report "After login"
之类的呢?**更新:**一个解决方法是在你的类或者全局Spock配置中添加一个小的helper方法,并在
when:
或then:
之后调用它。关于如何做的细节,请参见我的answer here。代替(或者除了)打印标签,你可以做takeScreen()
应该做的任何事情,或者只是从那里调用它。如果你想在when:
的开头调用它,请确保该方法像when:_ "bla"
一样调用,如果你想像你的例子一样在结尾调用它,你可以在随后的then:
中像then:_ "bla"
一样调用它。但是我不认为你应该这样做,在你的情况下,它只是信息隐藏。测试应该准确地显示它做什么。在