【问题标题】:Can we use global variables in the When Block of Spock Spec我们可以在 Spock 规范的 When 块中使用全局变量吗
【发布时间】:2013-11-05 18:05:32
【问题描述】:

我正在尝试利用全局变量在我的 spock 规范中存储一些数据,但不确定实现。这样做的原因是利用用户个人资料中的值并在结帐时对其进行验证。 准确地说,我登录并导航到用户个人资料。我需要能够将地址详细信息和用户详细信息存储在全局变量中。 当我订购某件商品时,我想在结账之前验证送货详情。

有没有办法在When块中使用全局变量。

下面的编辑示例:

在 Spock 规范中声明了一个全局变量(称为“buyerNameValue”)

并尝试将元素的值存储在该变量中以供以后使用:

def "存储用户详细信息"() {

when:
    assert at(UserProfilePage)
    buyerNameValue      << buyerName.text() 
    println(buyerNameValue) // To see if the value is being captured
    buyerAddressValue   << buyerAddress.text()
    println(buyerAddressValue)
    landingPage.click()
then:
    assert at(LandingPage)  

}

【问题讨论】:

  • 我不明白为什么不 - 你尝试了什么,它有效吗?
  • 编辑了示例以使其更有意义
  • 彼得回答(根据下面的 cmets)

标签: functional-testing spock geb


【解决方案1】:

我声明了全局变量,但是当我试图从一个元素中获取值时,它抛出了一个错误,指出在 when 块中不允许赋值运算符。

我也不能使用&lt;&lt;operator。这些只允许在 Spock 规范的 where 块中。

【讨论】:

  • 请看添加的例子
  • 我收到以下错误:java.lang.NullPointerException:无法在 login.tests.DetailsS​​pec.Store 用户详细信息(B_LoginSpec.groovy:71)处的空对象上调用方法 leftShift()
  • 可以在类中声明一个@Shared字段,然后使用=进行赋值。如果测试方法是依赖的,你应该用@spock.lang.Stepwise注释类。
  • 非常感谢彼得。我刚刚意识到“
猜你喜欢
  • 1970-01-01
  • 2011-10-25
  • 2016-06-22
  • 2020-11-09
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多