如何模拟递归函数

问题描述 投票:0回答:2

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

junit powermock
2个回答
2
投票

如果正在模拟该方法,则它不再是递归的-因为该模拟将仅返回在递归后将返回的最终返回值。

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

您的解释还不太清楚,但是也许只是模拟另一个被调用的方法就足以完成您的测试。您可以确保使用正确的参数调用其他方法。


0
投票

让我们尝试在[mk]中使用returnsMany

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.