Класс MyService содержит метод MyMethod, который асинициализирует новый объект Auth (внешняя ливерная лиц) и выполняет функцию doAction (). < /p>
public String myMethod(String param1, String param2) {
Auth auth = Mono.fromCallable(() -> {
Auth authRequest = new Auth(param1, param 2);
authRequest.doAction();
return authRequest;
}).subscribeOn(Schedulers.boundedElastic()).block();
System.out.println("Auth: " + auth.getErrCode());
System.out.println("Auth Err Status: " + auth.getErrStatus());
System.out.println("Auth Err Desc: " + auth.getErrDesc());
return "SUCCESS";
}
< /code>
Я пишу единый тестовый пример с использованием Mockito MockedConstruction, чтобы вернуть макет int при вызове doAction (). Тем не менее, он не может издеваться над auth.doaction (), поскольку он работает на другом потоке. Как я могу убедиться, что все объекты AUTH при инициативе, независимо от того, что поток возвращает макет объект? < /P>
@Test
public void stackOverflowTest() {
try (MockedConstruction mockedAuth = mockConstruction(Auth.class, (mock, context) -> {
when(mock.doAction()).thenReturn(198);
when(mock.getErrCode()).thenReturn("00");
when(mock.getErrDesc()).thenReturn("test desc");
})) {
myService.myMethod("test_param_1", "test_param_2");
}
}
< /code>
Примечание: < /p>
block () добавляется только в целях тестирования < /li>
PowerMock не является опцией, поскольку он не поддерживает последнюю версию Mockito < /li>
< /ul.>
Подробнее здесь: https://stackoverflow.com/questions/794 ... onous-call