Всего несколько дней назад я начал работать над Mockito и подбирал лучшие примеры для работы. К сожалению, я застрял со странной проблемой и не смог высмеять реализацию, чтобы сделать процедуру тестирования успешной. Я получаю NPE во время выполнения.
Я хотел бы объяснить с помощью кода, который я написал
public interface NxRegister {
public <S> Optional<S> requestAny(Class<S> service, NxToken token);
}
public interface NxrScheduler {
public String registrator(String str1, String str2,String str3, String str4, String str5, InputStream content) throws Exception;
}
реализация
public final void scheduleImport(
InputStream inputStream) {
try {
//Getting NPE at this line
Optional<NxrScheduler> optional = nxRegister.requestAny(NxrScheduler.class, WebToken.create());
assert !optional.isPresent() : "Could not find NxScheduler service in registrary";
NxrScheduler nxScheduler = optional.get();
}catch (Exception e) {
e.printStackTrace();
}
}
ATP с Mock
@Test @Integration public void runScheduleImport() throws Exception {
//Mock NxScheduler service
Optional<NxrScheduler> optNxrScheduler = Optional.of(Mockito.mock(NxrScheduler.class));
NxrScheduler mockNxScheduler = optNxrScheduler.get();
NxRegister mockNxRegister = Mockito.mock(NxRegister.class);
Mockito.when(mockNxRegister.requestAny(NxrScheduler.class,
WebToken.create())).thenReturn(optNxrScheduler);
String inputData = "Executing runScheduleImportat time = "
+ new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss").format(new
java.util.Date());
InputStream inputStream = new ByteArrayInputStream(inputData.getBytes());
//calling scheduleImport
sceduleImport(inputStream);
}```