我有一个使用@WebMvcTest
测试RestController的单元测试。控制器类自动装配我想要模拟的服务类。我发现我可以使用@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'类型的限定bean
我能够通过在我的Unit Test类中使用@MockBean
来进行VotingService来解决它。但是,我想使用NotificationServiceTestConfiguration中的Profile配置,而不必调用mock bean。
有什么想法吗?