MOCKITO-内部方法调用



我有一个称为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()执行时。

请帮助。

尝试以下:

@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间谍的文章。

如果在测试期间不执行getStockLevelLimit(),则意味着您要在某种程度上嘲笑正在测试的类。
这样做可以降低所测试行为的相关性和真实性。

您应该模拟依赖项,而不是测试类的内部方法。
我想您不想执行getStockLevelLimit(),因为它使用了要分离的外部依赖性或类似的依赖。
因此,您应该嘲笑和隔离getStockLevelLimit()后面,这不会直接成为Availability类的一部分。

相关内容

  • 没有找到相关文章

最新更新