使用Spock数据表来测试Geb页面对象

nmg*_*g49 0 groovy spock geb

完全披露:我对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元素没有被正确替换?

erd*_*rdi 6

数据表在指定它们的测试的上下文之外执行.它们必须以这种方式执行,以了解如何基于它们实际构建测试的多个迭代.在那个上下文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)