我有一个名为Availability.java
的类,并且有两个方法。
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()
。请帮忙。
最佳答案
如果在测试期间不必执行getStockLevelLimit()
,则意味着您要以某种方式模拟被测类。
这样做会降低所测试行为的相关性和真实性。
您应该模拟依赖关系,而不是模拟测试类的内部方法。
我想您不想执行getStockLevelLimit()
,因为它使用了您想要隔离的外部依赖项或类似的东西。
因此,您应该模拟并隔离getStockLevelLimit()
背后的内容,而这并不直接成为Availability
类的一部分。