我们如何将hashmap用作where块中的变量

时间:2019-06-12 01:00:58

标签: spring unit-testing spock

我想在这里放一个SET,怎么办? 我在spock where block new HashSet上搜索了任何结果。

    @Unroll
    def "Sample"() {
        expect:
            .....
        where:
        base | exponent || result1 | result2
        1    | 2        || 1 | {{I want to put a SET<ID> here, how?}}

    }

1 个答案:

答案 0 :(得分:1)

我认为您不仅是Spock的新手(我在上一个问题中注意到),而且还是Groovy的新手。没问题。 :-)您应该用Google搜索groovy set literal并找到类似this page的东西。

在Spock中,您可以将where:块中的变量定义为功能方法(测试方法)的方法参数,包括为其提供如下类型:

@Unroll
def "sample"(int base, int exponent, int result1, Set<Integer> result2) {
  expect:
  result2 instanceof Set

  where:
  base | exponent || result1 | result2
  1    | 2        || 1       | [1, 2, 3]
}

这会将列表文字强制转换或强制转换为集合。或者,您可以节省很多键入操作,只需使用Groovy as运算符,如我链接到的页面所示:

@Unroll
def "sample"() {
  expect:
  result2 instanceof Set

  where:
  base | exponent || result1 | result2
  1    | 2        || 1       | [1, 2, 3] as Set<Integer>
}

无论您的Set<Integer>类是什么,您都可以使用Set<Id>来代替Id