我正在尝试为之编写单元测试的Spring Boot应用程序中有一个骆驼处理器。处理器类如下所示:
@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创建的。
有人可以在这里建议正确的方法吗?
在此先感谢您的帮助。
答案 0 :(得分:0)
您可以使用@MockBean
@SpringBootTest
...
@MockBean
private MyService myService;
这会在Spring测试上下文中创建MyService
类型的Mockito Mock,并(因此)将其注入通常会注入真实Bean的位置。