Вот ошибка, которую я получаю:
Код: Выделить всё
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.
Вот упрощенная версия метода службы и настройки теста:
Вот упрощенная версия метода службы и настройки теста:
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");
}
}
Я настроил свой тест с использованием @Spy и @InjectMocks в сервисе, чтобы использовать как реальные реализации методов, так и макетные зависимости. Это особенно необходимо, поскольку метод updateEntityStatus внутри класса StatusService взаимодействует с другим методом, создающим клиент GraphQL, который мне также необходимо протестировать.
Подробнее здесь: https://stackoverflow.com/questions/784 ... zero-inter