[英]Spring Boot: inserting mock Bean into Camel Processor unit test
我正在尝试为其编写单元测试的 Spring Boot 应用程序中有一个 Camel 处理器。 处理器类如下所示:
@Named
public class MyProcessor implements Processor {
@Inject
private MyService myService;
@Override
public void process(Exchange exchange) {
...
}
}
我正在尝试将模拟 MyService 对象注入单元测试。
我试过这个:
@RunWith(CamelSpringRunner.class)
@SpringBootTest
public class MyProcessorTest {
@TestConfiguration
static class Config {
@Autowired
private MyProcessor myProcessor;
@Bean
CamelContextConfiguration myProcessorTestContextConfiguration() {
return new CamelContextConfiguration() {
@Override
public void beforeApplicationStart(CamelContext camelContext) {
MyService myService = Mockito.mock(MyService.class);
camelContext.addService(myService);
...
...但这似乎不起作用 - MyService 的一个非模拟实例被注入到处理器中。 我认为问题是因为我的模拟服务对象是在 Camel 上下文中创建的,而不是通过 Spring 创建的。
任何人都可以就此处的正确方法提出建议吗?
在此先感谢您的帮助。
您可以使用@MockBean
SpringBootTest 中的 Bean 替换为@MockBean
@SpringBootTest
...
@MockBean
private MyService myService;
这会在 Spring 测试上下文中创建一个MyService
类型的 Mockito Mock,并且(因此)将它注入到它通常会注入真正 Bean 的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.