>我看到了类似的问题,但没有像我正在寻找的那样正确回答。
我有 void 方法,它根据其他一些数据库值对模型对象进行一些更改,然后将其再次保存回数据库。
伪代码:
User{
List<Mark> marks;
String fullName;
int grade;
date dob;
}
逻辑是通过调用另一个服务来应用一些公式来更新用户等级。
这是我设计测试它的方式:
我可以给带有标记的User
对象作为输入。我将通过提供公式来模拟服务,以确定根据分数确定等级。我想在保存之前测试对象的最终User
是否与我的期望相匹配。
我知道我可以将其移动到单独的方法并返回对象,以便可以对其进行单元测试。我在这里看到的是是否有任何方法可以测试 void 方法中的逻辑来验证更新的对象。在我们的项目中,我有几种类似的方法。
我知道有Mockito.verify
或者我可以像doNothing
等一样打电话。这只是调用方法并查看内部发生了什么。但是我无法通过调用这些方法进行数据验证。
如果有人能为此提出解决方案,那就太好了。
我举了一个例子,代码对我可用。不过,这是一个通用问题。我的问题在这里如何测试无效方法?我的问题不是如何模拟无效方法。由于 void 方法不返回任何内容,但它执行一些逻辑,最后更新 DB。我想测试实现的逻辑是否适用于不同的场景。情况是无法更改原始方法编写这些方法的单元测试。有什么建议吗?
你的方法不返回任何内容这一事实是无关紧要的。您可以测试与任何其他方法相同的 void 方法:设置输入、调用方法、执行所需的断言。
如果我理解正确,您遇到的问题是该方法不返回任何内容,但是当您传入初始User
对象时,您已经对该对象的引用,因此您仍然可以在 void 方法完成后执行您需要的任何断言。