使用 Spock 数据表测试 Geb 页面对象
Using Spock Data Tables to Test Geb Page Objects
完全披露:我对 Geb 和 Spock 都很陌生。
作为我正在处理的测试套件的一部分,我们必须在多个页面元素上测试 运行 相同的测试。我希望能够使用 Spock 数据-table 抽象出这种行为。然而,当我这样做时,Geb 抱怨它无法识别页面 属性.
这是我所说内容的一个简单示例:
when:
textBox = value
submit()
then:"value is updated"
at SuccessPage
textBox == value
where:
textBox | value
box1 | val1
box2 | val2
box3 | val3
在此示例中,框 1-3 是在 Page 的 content 对象中定义的。
这些测试在我独立进行时有效,但在我使用数据时无效 table。为什么 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
完全披露:我对 Geb 和 Spock 都很陌生。
作为我正在处理的测试套件的一部分,我们必须在多个页面元素上测试 运行 相同的测试。我希望能够使用 Spock 数据-table 抽象出这种行为。然而,当我这样做时,Geb 抱怨它无法识别页面 属性.
这是我所说内容的一个简单示例:
when:
textBox = value
submit()
then:"value is updated"
at SuccessPage
textBox == value
where:
textBox | value
box1 | val1
box2 | val2
box3 | val3
在此示例中,框 1-3 是在 Page 的 content 对象中定义的。
这些测试在我独立进行时有效,但在我使用数据时无效 table。为什么 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