我的服务类
public boolean myMethod1() {
boolean success = false
for (1..2) {
success = myMethod2()
}
return success
}
public boolean myMethod2() {
int value = otherService.someMethod() // mocked this method call
boolean saved = false
try {
// trying to persist value
} catch (ValidationException e) {
if (someCondition)
myMethod2() // comes back here instead of going to the method called : "Problem line"
}
return saved
}
我有一个测试用例,它模拟otherService.someMethod()
为每次执行返回不同的结果。使用 groovy 方式而不是 grails Grails 错误 - http://jira.grails.org/browse/GRAILS-4611
当存在验证异常并且在某些情况下,我想myMethod2()
递归调用以获取用于保存数据的新输出。模拟方法闭包将以这样的方式返回输出,即第一遍将返回 int,这将在内部返回 (true/false) 返回到myMethod1()
. 下一次(从循环中)otherService.someMethod()
调用时,它将返回一个输出,这将导致 avalidationException
并且它将为新输出调用相同的方法。现在,当第三次调用模拟方法时,模拟输出将返回一个不同的值,不会导致验证异常。执行 try 块后,它会返回 的 return 语句,myMethod2()
但它会回到“问题行”而不是回到myMethod1()
调用它的那个。
如何让测试用例回调myMethod1()