Grails 多个when/then和where

Grails 多个when/then和where,grails,testing,spock,Grails,Testing,Spock,我正在尝试使用Spock和Geb编写功能测试。 我想在一种测试方法中使用多个when/then块,每个块使用where。可能吗?或者我应该使用一个where for all when/then?您将无法在每次交互中使用where,它会抱怨使用情况。您将得到一个用于多个交互的,其中。如下: 您对每种方法的经验是什么?使用它们中的任何一个你会遇到任何问题吗?@dmahapatro,我试图用测试模拟用户的行为:单击编辑按钮、填充字段、单击保存等等。我是spock和functional的新手。我做错了什

我正在尝试使用SpockGeb编写功能测试。
我想在一种测试方法中使用多个when/then块,每个块使用where。可能吗?或者我应该使用一个where for all when/then?

您将无法在每次交互中使用
where
,它会抱怨使用情况。您将得到一个用于多个交互的
,其中
。如下:


您对每种方法的经验是什么?使用它们中的任何一个你会遇到任何问题吗?@dmahapatro,我试图用测试模拟用户的行为:单击编辑按钮、填充字段、单击保存等等。我是spock和functional的新手。我做错了什么?谢谢,dmahapatroA测试工作流的常用方法是为每个步骤使用单独的方法。然后在每个方法中都可以有一个when-where。要使用这种测试风格,请使用
@Stepwise
@PeterNiederwieser注释测试类,谢谢,我将使用这种风格重新编写我的测试。如果要测试多个交互,那么可以用一种方法很好地完成。请关注详细信息@谢谢你!一个小问题。在一个示例中,每个when/then使用一个where块。如果我在where中定义了“name”这样的变量,那么它将在每个when块中都可用?请回答我的第二条评论:)我不确定您指的是哪个示例。但从上述答案中提到的示例中可以看出,您可以在每个when块中引用
where
块的数据网格内的变量,如“name”@baxxabitThanks,你太棒了!
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
}