Mockito用于模拟对象行为,但如果方法调用不是对象调用,如何检查条件是否匹配。
例如
boolean sameType= bloodType != null && bloodType.type.equals(patient.type);
if (sameType && transfusion(availability)) {
return true;
}
if (sameType && availability <= 0) {
reject.rejectBlood(info);
return false;
}
如何使用mockito覆盖那些?
答案 0 :(得分:1)
我假设你指的是方法调用
transfusion(availability)
假设它也是一个私有方法,你不能使用Mockito模拟私有方法,但是你可以使用PowerMock。
无论如何,除非遗留代码由于任何原因而无法重构,否则最好避免模拟私有方法调用,因为它会导致脆弱且不太可读的测试。
答案 1 :(得分:0)
上面的代码块不是孤立的 - 它是一种方法,或者是方法的一部分。那个方法就是你正在测试的。并且这个方法中没有任何东西不是对象(或者我认为是布尔值)。
因此,使用Mockito来模拟你的bloodType
对象(或者,如果它是一个足够简单的对象,自己制作一个真实的对象),并确保不同的血型在你的方法中产生预期的结果。同时模拟reject
对象,以确保使用正确的rejectBlood()
对象调用info
。
一旦这些事情被嘲笑,你就可以调用你的方法并验证它是否返回了正确的值,并且在你的模拟中进行了适当的调用。