捕获并评估参数约束“*_”

Capture and evaluate argument constraint "*_"

Spock 有这个很好的语法来检查是否调用了具有特定名称的方法,忽略参数的数量:

1 * subscriber.receive(*_) // any argument list (including the empty argument list)

是否可以在 Object[] 数组中捕获参数列表并对其进行断言?

像这样:

1 * subscriber.receive(*args)
args.size() < 2 || args.size() > 5

您可以使用此语法将参数检查为数组:

1 * subscriber.receive(*_) >> { assert it.size() < 1 || it.size() > 5 }

当使用交互闭包时,当使用无类型参数调用时,此参数将所有参数作为一个数组。