我在需要测试的类中有一个方法。该方法使用我需要模拟的外部类,因此外部类不会被测试或执行其依赖项。特殊的挑战是:外部类的一个方法被覆盖。方法如下所示:
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");
那没有用。我想念什么?我需要如何重构才能使其可测试?