DoAnswer Mockito: вести себя странно и не проверять издевающегося слушателя [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 DoAnswer Mockito: вести себя странно и не проверять издевающегося слушателя [закрыто]

Сообщение Anonymous »

Я пытаюсь протестировать метод вызова API, поскольку этот API является окончательным. Я не могу расширять и создавать тестовые двойники, поэтому я использовал Mockito, чтобы заглушить функциональность после инициализации этого API, который я создал Проверьте двойной тест, чтобы имитировать создание возражения о завершении. Я не передал этот объект, поскольку он не нужен внутри метода SUT.InitAPI, я выполнил несколько действий после завершения инициализации.
вопросы такие: :
  • Почему я получаю сообщение об ошибке в этом тесте, хотя я определил класс TD
    и заблокировал ответ на вызов API

    Почему я получаю сообщение об ошибке в этом тесте, хотя я определил класс TD
    и заблокировал ответ для вызова API

    li>
    Это хороший способ протестировать заглушку ответа метода API. Я пытаюсь смоделировать реальную функциональность внутри метода InitializeReader(), чтобы мне не приходилось иметь дело с каждой строкой внутри.
Разыскивается, но не вызывается:
mockErrorListener.onInitAPISatus(true);
@Mock private Context mockContext;
@Mock private FetchMRZDetails.ListenerMRZ mockErrorListener;
FetchMRZDetails SUT;
@Mock public DocumentReaderInitCompletionTD CompletionMock;
@Mock private DocumentReader mockDocumentReader;

@Before
public void setup() throws Exception {
// Initialize mockContext behavior
SUT = new FetchMRZDetails(mockContext);
SUT.registerListener(mockErrorListener);
}

@Test
public void testInitAPI_Success() {

byte[] license = new byte[] {1, 2, 3, 4}; // Simulated license byte array
doAnswer(
invocation -> {
CompletionMock.onInitCompleted(true, null);
return null;
})
.when(mockDocumentReader)
.initializeReader(
eq(mockContext),
any(DocReaderConfig.class),
any(IDocumentReaderInitCompletion.class));

// Act
SUT.InitAPI(license, mockDocumentReader);

// Assert
// verify that listener on status was called
Mockito.verify(CompletionMock).onInitCompleted(true, null);
Mockito.verify(mockErrorListener).onInitAPISatus(true);
}
public class DocumentReaderInitCompletionTD implements IDocumentReaderInitCompletion {
public void onInitCompleted(boolean success, DocumentReaderException exception) {
mockErrorListener.onInitAPISatus(true);
}
}


Реализация была изменена, чтобы заглушить поведение mockDocumentReader, поскольку он играет роль внутри теста:
Примечание: Раньше я использовал неправильный подход, чтобы имитировать обратный вызов, не проходя его внутри теста.
Тест пройден
when(mockDocumentReader.processParams()).thenReturn(processParam);

scenario1 = new DocumentReaderScenario("MRZ");
scenario2 = new DocumentReaderScenario("");

// Mocking the public field availableScenarios directly
mockScenarios = Arrays.asList(scenario1, scenario2);
mockDocumentReader.availableScenarios = mockScenarios;

@Test
public void testInitAPI_ScenarioAssigned_Success() {
// Arrange

byte[] license = new byte[] {1, 2, 3, 4}; // Simulated license byte array

doAnswer(
invocation -> {
IDocumentReaderInitCompletion completionArg = invocation.getArgument(2);
completionArg.onInitCompleted(true, null);
return null;
})
.when(mockDocumentReader)
.initializeReader(
eq(mockContext),
any(DocReaderConfig.class),
any(IDocumentReaderInitCompletion.class));

// Act
SUT.InitAPI(license, mockDocumentReader);

// Verify that processParams().scenario is set to scenarios.get(0)
verify(mockDocumentReader, times(2)).processParams();
assertEquals(mockScenarios.get(0).name, processParam.scenario);
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... d-listener
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»