【问题标题】:Multiple when/then with where for each other多个 when/then 与 where 彼此
【发布时间】:2013-11-21 09:21:04
【问题描述】:

我正在尝试使用 Spock 和 Geb 编写功能测试。 我想在一个测试方法中使用 multiple blocks of when/then 和 where 每个块。可能吗?或者我应该在所有时间/那时使用一个 where?

【问题讨论】:

  • 您对每种方法的体验如何?您在使用其中任何一个时遇到任何问题吗?
  • @dmahapatro,我正在尝试通过测试来模拟用户的行为:单击以编辑按钮、填充字段、单击保存等。我是 spock 和功能方面的新手。我做错了什么?谢谢,dmahapatro
  • 测试工作流的常用方法是为每个步骤设置单独的方法。然后你可以在每种方法中都有一个when-then-where。要使用这种测试风格,请使用 @Stepwise 注释测试类。
  • @PeterNiederwieser,谢谢,我会用这种风格重做我的测试。

标签: grails testing spock


【解决方案1】:

您将无法在每次交互时使用where,它会抱怨使用情况。您最终会得到一个 where 进行多次交互。关注this as a sample:

def test() {
  given:   
  def c
  def d

  when:
  c = a + b

  then:
  c == result

  when:
  d = e - f

  then:
  d == res

  where:
  a | b |result | e |f |res
  1 | 2 | 3     | 7 |5 |2
}

【讨论】:

  • 如果您有多个交互要测试,那么是的,您可以用一种方法很好地做到这一点。关注docs了解详情。 @baxxabit
  • 谢谢!一个小问题。在一个示例中,您为每个 when/then 使用一个 where 块。如果我在哪里定义像'name'这样的变量,它将在每个when块中都可用?
  • 请回答我的第二条评论:)
  • 我不确定您指的是哪个示例。但是,从上面答案中提到的示例中可以看出,您可以在每个 when 块中引用 where 块的数据网格内的变量,例如“名称”。 @baxxabit
  • 谢谢,你太棒了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 2012-08-29
  • 2018-09-16
相关资源
最近更新 更多