我试图从
移动一些验证then:
1*mock.method()
result.value>0
这样的辅助方法,
def reusedVerification(Mock mock,Model result){
assert 1*mock.method()
assert result.Value>0
}
但是spock给我一个像这样的错误
groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method
java.lang.Integer#multiply.Cannot resolve which method to invoke for [null]
due to overlapping prototypes between:
[class java.lang.Character]
[class java.lang.Number]
at .....
我认为'*'符号在辅助方法中被识别为乘法符号,我该如何解决这个问题?
答案 0 :(得分:0)
Spock的模拟验证语法只能直接在测试体中使用。
答案 1 :(得分:0)
您可以在explicit interaction block内部调用助手验证方法。
then:
interaction { reusedVerification(theMock, theResult) }
helper方法中的任何断言都应该是spock交互。例如:
def reusedVerification(Mock mock,Model result){
1 * mock.method()
result.Value > 0
}
如果使用的是IntelliJ,则可能会为1 * mock.method()
语句给出“方法调用不明确”的警告。您可以使用以下方法抑制这种情况:
//noinspection GroovyAssignabilityCheck
1 * mock.method()