Тест, классифицированный как @WebMvcTest
, - это тесты, в которых только сосредоточены на компонентах Spring MVC: контроллерах.
Таким образом, поле обслуживания, объявленное в модульном тесте, не может быть подключено автоматически:
@Autowired
private ContactUsService service;
Так что вы должны посмеяться над этой зависимостью:
@MockBean
private ContactUsService service;
Обратите внимание, что, поскольку FleetController
не имеет прямой зависимости от FleetRepository
, насмешка над этим компонентом не требуется:
@MockBean
private FleetRepository repository;
Это еще хуже, так как добавляет в контекст макет, который может создать побочный эффект во время вашего теста.
Вы должны смоделировать только прямые зависимости тестируемого контроллера.
В качестве альтернативы, если вы хотите смоделировать только некоторые bean-компоненты, а не все, которые не являются контроллерами, не используйте @WebMvcTest
и вместо @SpringBootTest
, который будет загружать весь контекст.
Затем объявите в тестовом классе класс (ы), который вы хотите смоделировать с помощью @MockBean
.