参数化 spock 中的对象

Parameterizing Objects in spock

我在使用 spock where 块对对象列表进行参数化时遇到问题。似乎 ListInput 值不是从 where 子句中获取的,而是总是出现空值。我已经验证了字符串和其他原始类型的相同功能,并且工作正常。 Spock 是否支持参数化对象?如果是,这里的问题是什么。

 def "check Param Of List of Objects"()
 {

        expect:
        def a= hasflag(ListInput);
        a== flag
        where:
        ListInput | flag
        BOList1  | true
        BOList2  | false
 }

此处 BOList1 的类型是一个 java ArrayList 包含对象

您提供的信息还不够明确,但我会尽力提供帮助。

where 块不仅仅是一个代码块,它更像是传递给方法的一些参数。它 可以 做很多事情,但有时您需要以不同的方式传递代码。

注意事项:
- 不允许使用 Void 方法(但您可以使用 .with{} 解决此问题)
- 迭代参数不能同时是派生参数(从其他参数构造)
- 如果您引用 class 级变量(在 class 中定义但在此测试之外),则需要为它们提供 @Shared 注释以便您的测试可以访问。

提供有关您的列表来源的更多信息将有助于我提供更好的建议。


最后提示;显式转换您的参数以查看是否能为您提供更多信息

def "check Param Of List of Objects"(ArrayList listInput, boolean flag) {
    expect:
        flag == hasflag(ListInput);
    where:
        listInput | flag
         BOList1  | true
         BOList2  | false
}