如何模拟递归函数

时间:2013-09-22 10:26:58

标签: junit powermock

当我测试方法时,方法的内部调用自身和同一类中的另一个方法。我使用局部模拟来指定另一个方法的返回值但是如何指定第一个方法的返回值?

2 个答案:

答案 0 :(得分:2)

如果你在模拟方法,那么它不再是递归的 - 因为mock只会返回递归后返回的最终返回值。

如果要测试递归函数,则不要模拟递归方法。

您的解释有点不清楚,但也许只是嘲笑被调用的其他方法足以进行测试。您可以确保使用正确的参数调用其他方法。

答案 1 :(得分:0)

让我们尝试returnsMany进行模拟:

coEvery{ mockEntity.recursiveMethod()}.returnsMany(value1, value2,...)

第一次调用recursiveMethod()将返回value1,然后第二次调用返回value2,...

以正确的方式处理递归流程