2

我有一个测试用例,我需要测试多个字符串,它们被初始化为 String[]

   myArray.each {
        shouldFail(IllegalArgumentException) {
            println "it = " + it
            testObj.testMyString("$prefix $it", mockBuilder);
         }
    }

打印语句显示"it"为空。我究竟做错了什么?

4

3 回答 3

3

如果您命名每个 var,它应该可以工作:

myArray.each { element ->
    shouldFail(IllegalArgumentException) {
        println "it = $element"
        testObj.testMyString("$prefix $element", mockBuilder)
    }
}
于 2012-05-11T14:42:04.060 回答
2

每个闭包都有自己的“它”。在您的情况下,当“it”为空时,它是shouldFail闭包的“it”而不是myArray.each闭包。

于 2012-05-11T14:49:57.840 回答
0

当我将代码更改为此时它起作用了

 myArray.each {
        def testStr = it
        shouldFail(IllegalArgumentException) {
            println "it = " + testStr
            testObj.testMyString("$prefix $testStr", mockBuilder);
         }
    }

我猜“它”在内部封闭中不可用

于 2012-05-11T13:51:40.483 回答