Mockito - 内部方法调用
Mockito - internal method call
我有一个名为 Availability.java
的 class 并且有两种方法。
public Long getStockLevelStage() {
//some logic
getStockLevelLimit();
}
public Long getStockLevelLimit() {
String primaryOnlineArea = classificationFeatureHelper.getFirstFeatureName(productModel, FEATURE_CODE_PRODUCT_ONLINE_AREA_PRIMARY, language);
................
return new Long();
}
我正在编写单元测试class AvailabilityTest.java
。
@RunWith(MockitoJUnitRunner.class)
public class AvailabilityTest {
@InjectMocks
private Availability availability = new Availability();
@Test
public void testGetStockLevelStage() {
availability.getStockLevelStage();
}
}
当我调用availability.getStockLevelStage()
方法时,它会调用getStockLevelLimit()
方法。是否可以模拟内部方法调用?
在这种情况下,我不希望在 getStockLevelStage()
执行时执行 getStockLevelLimit()
。
请帮忙。
试试这个:
@RunWith(MockitoJUnitRunner.class)
public class AvailabilityTest {
@InjectMocks
@Spy
private Availability availability = new Availability();
@Test
public void testGetStockLevelStage() {
Mockito.doReturn(expectedLong).when(availability).getStockLevelLimit();
availability.getStockLevelStage();
}
}
这是我在 Mockito Spying 上写的一篇文章,如果您需要进一步阅读。
如果 getStockLevelLimit()
在你的测试期间没有被执行,这意味着在某种程度上你想模拟被测试的 class。
这样做会降低所测试行为的相关性和真实性。
您应该模拟依赖关系,而不是测试的内部方法 class。
我想你不想执行 getStockLevelLimit()
因为它使用了你想要隔离的外部依赖或类似的东西。
所以你应该模拟和隔离 getStockLevelLimit()
后面的那个,而不是 Availability
class.
的直接一部分
我有一个名为 Availability.java
的 class 并且有两种方法。
public Long getStockLevelStage() {
//some logic
getStockLevelLimit();
}
public Long getStockLevelLimit() {
String primaryOnlineArea = classificationFeatureHelper.getFirstFeatureName(productModel, FEATURE_CODE_PRODUCT_ONLINE_AREA_PRIMARY, language);
................
return new Long();
}
我正在编写单元测试class AvailabilityTest.java
。
@RunWith(MockitoJUnitRunner.class)
public class AvailabilityTest {
@InjectMocks
private Availability availability = new Availability();
@Test
public void testGetStockLevelStage() {
availability.getStockLevelStage();
}
}
当我调用availability.getStockLevelStage()
方法时,它会调用getStockLevelLimit()
方法。是否可以模拟内部方法调用?
在这种情况下,我不希望在 getStockLevelStage()
执行时执行 getStockLevelLimit()
。
请帮忙。
试试这个:
@RunWith(MockitoJUnitRunner.class)
public class AvailabilityTest {
@InjectMocks
@Spy
private Availability availability = new Availability();
@Test
public void testGetStockLevelStage() {
Mockito.doReturn(expectedLong).when(availability).getStockLevelLimit();
availability.getStockLevelStage();
}
}
这是我在 Mockito Spying 上写的一篇文章,如果您需要进一步阅读。
如果 getStockLevelLimit()
在你的测试期间没有被执行,这意味着在某种程度上你想模拟被测试的 class。
这样做会降低所测试行为的相关性和真实性。
您应该模拟依赖关系,而不是测试的内部方法 class。
我想你不想执行 getStockLevelLimit()
因为它使用了你想要隔离的外部依赖或类似的东西。
所以你应该模拟和隔离 getStockLevelLimit()
后面的那个,而不是 Availability
class.