Тест Mockito не пройден с сообщением «Разыскивается, но не вызывается»; На самом деле взаимодействий не было. Ошибка.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Тест Mockito не пройден с сообщением «Разыскивается, но не вызывается»; На самом деле взаимодействий не было. Ошибка.

Сообщение Anonymous »

Я столкнулся с проблемами при модульном тестировании в приложении Spring Boot, когда определенный метод репозитория не вызывается должным образом во время тестирования метода службы. Несмотря на настройку теста с помощью Mockito, метод репозитория, похоже, пропускается.
Вот ошибка, которую я получаю:

Код: Выделить всё

19:47:54.914 [Test worker] DEBUG org.reactor.util.Loggers - Using Slf4j logging framework
19:47:54.963 [Test worker] INFO com.myapp.service.EntityManagementService - No entity found for reference number: referenceNumber

Wanted but not invoked:
entityRepository.findByRefNumber("referenceNumber");
-> at com.myapp.service.EntityManagementServiceTest.shouldInvokeRepositoryWhenProcessingEntityUpdate(EntityManagementServiceTest.java:150)
Actually, there were zero interactions with this mock.

Я тестирую метод службы, который обрабатывает обновления статуса и взаимодействует с клиентом GraphQL для дальнейших операций. Метод службы *processStatusChange* должен получить объект с помощью метода репозитория *findEntityByRef*. Однако, хотя я имитирую этот метод для возврата определенного объекта, он ведет себя так, как будто не находит объект.
Вот упрощенная версия метода службы и настройки теста:
Вот упрощенная версия метода службы и настройки теста:
p>
Метод обслуживания:

Код: Выделить всё

    @Autowired
private EntityRepository entityRepository;

public void processEntityUpdate(String refNumber) {
Optional entityOptional = entityRepository.findByRefNumber(refNumber);
if (entityOptional.isEmpty()) {
log.info("Entity not found for reference number: {}", refNumber);
return;
}
Entity entity = entityOptional.get();
updateEntityDetails(entity);
}

protected void updateEntityDetails(Entity entity) {
// Interaction with GraphQL client to update details
}
}

Настройка теста:

Код: Выделить всё

@ExtendWith(MockitoExtension.class)
public class EntityManagementServiceTest {
@Mock
private EntityRepository entityRepository;

@InjectMocks
@Spy
private EntityManagementService entityManagementService;

@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
Entity mockEntity = new Entity();
mockEntity.setRefNumber("referenceNumber");
when(entityRepository.findByRefNumber("referenceNumber")).thenReturn(Optional.of(mockEntity));
}

@Test
void shouldInvokeRepositoryWhenProcessingEntityUpdate() {
entityManagementService.processEntityUpdate("referenceNumber");
verify(entityRepository).findByRefNumber("referenceNumber");
}
}

Я ожидал, что будет вызван *findEntityByRef* и тест проверит его вызов, но тест завершился неудачно, заявив, что метод не был вызван.
Я настроил свой тест с использованием @Spy и @InjectMocks в сервисе, чтобы использовать как реальные реализации методов, так и макетные зависимости. Это особенно необходимо, поскольку метод updateEntityStatus внутри класса StatusService взаимодействует с другим методом, создающим клиент GraphQL, который мне также необходимо протестировать.

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

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

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

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

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

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

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