【发布时间】:2013-04-26 15:34:54
【问题描述】:
MyService.class
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() 时,它将返回一个输出,这将导致validationException 和
它将为新输出调用相同的方法。现在,当第三次调用模拟方法时,被模拟的
输出将返回一个不会导致验证异常的不同值。执行 try 块后,
它涉及到myMethod2() 的返回语句,但它返回到“问题行”而不是返回到调用它的myMethod1()。
如何让测试用例回调myMethod1()
【问题讨论】:
标签: grails recursion groovy testcase