У меня есть @Service в приложении Spring Boot, которое анализирует файл, а затем сохраняет его в БД с помощью Spring Data JPA. Я хочу протестировать этот синтаксический анализ со всей логикой изменения этого сопоставления. Итак, для этого мне нужно сохранить отображение в БД в тесте.
@Service
public class ParsingService {
@Autowired
private StoringInDBRepository storingInDBRepository;
}
@Repository
public interface StoringInDBRepository extends JpaRepository<MyEntity, String> {
Проблема в том, что во время теста с аннотацией @SpringBootTest я не хочу загружать весь контекст, а только мой ParsingService. Когда я пишу:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {ParsingService.class})
public class ParsingServiceTest{
@Test
public void someTest(){
}
}
Этот тест не может быть инициализирован, потому что я не загружаю StoringInDBRepository в аннотации @SpringBootTest. Однако я могу это сделать, потому что StoringInDBRepository - это интерфейс. Использование @DataJpaTest в соответствии с javadoc будет правильным, только если я тестирую уровень репозитория. Использование @DataJpaTest и @SpringBootTest не рекомендуется.
Как мне протестировать такие сервисы? Заранее спасибо.