【发布时间】:2018-09-13 21:35:32
【问题描述】:
我有:
- 一个接口:
EntityService - 第一个实现:
EntityServiceImpl- 这个类用@Primary注解 - 另一个:
EntityServiceClientImpl - 和具有此字段的控制器
@Autowired EntityService
我想在这个控制器上做一个测试,为了这个测试是单一的,我模拟了EntityService。
所以这段代码当然不起作用,因为 Spring 检测到两个带有 Primary 注释的 bean:
@Configuration
class EntityControllerTestConfig {
@Bean
@Primary
EntityService entityService() {
return mock(EntityService.class);
}
}
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
@WebAppConfiguration
@ContextConfiguration(classes = EntityControllerTestConfig.class)
public class EntityControllerTest {
@Autowired
private EntityService entityService;
...
@SpringBootApplication(scanBasePackages= "com.company.app")
@EntityScan (basePackages = {"com.company.app" }, basePackageClasses = {Jsr310JpaConverters.class })
@EnableJpaRepositories("com.company.app")
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
我试图找到另一种方法来模拟并在测试配置中排除EntityServiceClient,但我无法模拟。 (参见:exclude @Component from @ComponentScan)
【问题讨论】:
标签: spring-boot mockito