У меня есть модульный тест, который тестирует RestController с использованием @WebMvcTest
.Класс контроллера автоматически связывает класс обслуживания, который я хотел бы высмеять.Я обнаружил, что могу использовать @Profile
и @Configuration
, чтобы создать класс конфигурации для указания основных bean-компонентов, используемых при активном профиле.Я попытался добавить активный профиль в свой класс модульного тестирования, но он говорит, что не смог загрузить ApplicationContext.Я не уверен, как я могу это сделать при использовании @WebMvcTest
.
@ActiveProfiles("mockServices")
@RunWith(SpringRunner.class)
@WebMvcTest(VoteController.class)
public class VoteControllerTest {
...
Кажется, я могу подойти к этому неправильно.Любая помощь приветствуется.
Редактировать:
Вот мой класс конфигурации:
@Profile("mockService")
@Configuration
public class NotificationServiceTestConfiguration {
@Bean
@Primary
public VotingService getVotingService() {
return Mockito.mock(VotingService.class);
}
}
Ошибка, которую я на самом деле получаю:
org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет подходящего компонента типа 'VotingService'
Мне удалось решить его с помощью @MockBean
для VotingService в моем классе модульного теста.Однако я хочу использовать конфигурацию профиля, которая есть в NotificationServiceTestConfiguration, без необходимости вызывать фиктивные компоненты.
Есть мысли?