繁体   English   中英

Spring Boot:将模拟 Bean 插入 Camel Processor 单元测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM