我有一个叫做Availability.java
的类,有两种方法。Mockito - 内部方法调用
public Long getStockLevelStage() {
//some logic
getStockLevelLimit();
}
public Long getStockLevelLimit() {
String primaryOnlineArea = classificationFeatureHelper.getFirstFeatureName(productModel, FEATURE_CODE_PRODUCT_ONLINE_AREA_PRIMARY, language);
................
return new Long();
}
我在写一个单元测试类AvailabilityTest.java
。
@RunWith(MockitoJUnitRunner.class)
public class AvailabilityTest {
@InjectMocks
private Availability availability = new Availability();
@Test
public void testGetStockLevelStage() {
availability.getStockLevelStage();
}
}
当我打电话availability.getStockLevelStage()
方法,它调用getStockLevelLimit()
方法。是否可以模拟内部方法调用?
在这种情况下,我不想getStockLevelLimit()
被执行,当getStockLevelStage()
得到执行。
请帮忙。
如果我理解正确,我们不能模拟内部方法调用。 tat是否正确? – user2057006
您可以但只有在您无法完成您的测试时才应该这样做。代码应该设计为自然可测试的。嘲讽被测实例的私有方法是非常自然的。 – davidxxx
我没有选择将getStocklevelLimit()方法移动到另一个类并对其进行模拟。当前代码由另一个同事编写时有一些限制。正如你所说有办法做到这一点。你可以请我建议我现在的代码,我张贴? – user2057006