【发布时间】:2020-01-16 04:38:36
【问题描述】:
我在需要测试的类中有一个方法。该方法使用我需要模拟的外部类,因此外部类不会被测试或执行其依赖项。特殊的挑战是:外部类的一个方法被覆盖。方法如下:
public void fetchLocalData(final String source, final ObservableEmitter<String> destination) {
final List<String> options = Arrays.asList("recursive","allFiles","includeDir");
// This class comes from a package
final DirScan dirscan = new DirScan(source, options) {
@Override
protected Action getResult(final String result) {
destination.onNext(result);
return Action.Continue;
}
};
dirscan.scan();
destination.onComplete();
}
我试过了:
DirScan scanner = mock(DirScan.class);
when(scanner.scan()).thenReturn("one").thenReturn("two");
那没用。我想念什么?我需要如何重构才能使其可测试?
【问题讨论】:
-
并非如此。 new 关键字不是我的主要问题,而是需要访问方法级别对象的覆盖方法
标签: java mockito rx-java2 junit5