我想在每个'什么时候'步骤(Spock)做一些动作takeScreen()。如果不在每个“何时”步骤调用此函数,我该怎么做呢。
def "doSomeAction"() {
when:
doSmth()
takeScreen()
then:
at SomePage
when:
doAction()
takeScreen()
then:
at SomePage
}
def takeScreen(){
//code there
}
答案 0 :(得分:0)
你做不到。有什么大不了的?
顺便说一句,假设你使用Geb + Spock来测试某种类型的Web应用程序,以防takeScreen()
用于截取屏幕截图,为什么不从GebReportingSpec
派生你的Geb测试并使用report "After login"
左右?
更新:解决方法是在您的类中添加一个小帮助方法,或者只为全局Spock配置添加一个帮助方法,并在when:
或then:
之后调用它。有关如何执行此操作的详细信息,请参阅我的answer here。除了(或除了)打印标签之外,您可以执行takeScreen()
应该执行的任何操作,或者只是从那里调用它。如果你想在when:
的开头想要它,请确保调用方法如when:_ "bla"
,如果你想在最后一样,你可以在随后的{{1}中调用它像then:
一样。但我不认为你应该这样做,在你的情况下它只是信息隐藏。测试应该准确显示它的作用。在我的项目中,开发人员自己多次在辅助方法中遇到问题,尤其是在Geb中,为了失败的测试而截取主题的原因并且过于复杂而无法解释。