当我测试一个方法时,该方法的内部将调用自身,并且将调用同一类中的另一个方法。我使用部分模拟来指定另一个方法的返回值,但是如何指定第一个方法的返回值?
如果正在模拟该方法,则它不再是递归的-因为该模拟将仅返回在递归后将返回的最终返回值。
如果要测试递归函数,请不要模拟递归方法。
您的解释还不太清楚,但是也许只是模拟另一个被调用的方法就足以完成您的测试。您可以确保使用正确的参数调用其他方法。
让我们尝试在[mk]中使用returnsMany
:
coEvery{ mockEntity.recursiveMethod()}.returnsMany(value1, value2,...)
第一次调用recursiveMethod()将返回value1,然后第二次调用将返回value2,...
以正确的方式处理递归流程