完全披露:我对Geb和Spock都很陌生.
作为我正在研究的测试套件的一部分,我们必须测试在几个页面元素上运行相同的测试.我希望能够使用Spock数据表来抽象这种行为.但是,当我这样做时,Geb抱怨它无法识别页面属性.
这是我正在谈论的一个简单的例子:
when:
textBox = value
submit()
then:"value is updated"
at SuccessPage
textBox == value
where:
textBox | value
box1 | val1
box2 | val2
box3 | val3
Run Code Online (Sandbox Code Playgroud)
在此实例中,盒1-3的定义内容一个的对象页面.
这些测试在我独立完成时起作用,但在我使用数据表时则不行.为什么Geb元素没有被正确替换?
数据表在指定它们的测试的上下文之外执行.它们必须以这种方式执行,以了解如何基于它们实际构建测试的多个迭代.在那个上下文box1中没有指向页面属性,因为您还没有指向浏览器SuccessPage.
为了解决这个问题,您需要使用内容名称(将是其实例String),并在您处于正确的上下文中时将其解析为页面的属性:
when:
page."$textBox" = value
submit()
then:"value is updated"
at SuccessPage
page."$textBox" == value
where:
textBox | value
'box1' | val1
'box2' | val2
'box3' | val3
Run Code Online (Sandbox Code Playgroud)