java - Mockito Spring Camel @Autowire 失败
问题描述
我正在尝试对骆驼路线进行单元测试。被测路由扩展了一个自定义抽象 RouteBuilder(我知道有利于组合而不是继承 - 这是维护代码)。我已经像@Roman Vottner在这里所做的那样设置了我的测试。一切正常(已初始化),直到我点击层次结构中的第一个抽象类。它有一个未初始化的@Autowired 类(为空),即使它在测试开始时被模拟和@Autowired。关于如何解决我的注射问题的任何想法?
@RunWith(CamelSpringRunner.class)
@BootstrapWith(CamelTestContextBootstrapper.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = {FooRouteTest.ContextConfig.class})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class FooRouteTest {
@Configuration
@PropertySource({"classpath:some.properties", "classpath:environment.properties"})
public static class ContextConfig extends CamelConfiguration {
@Bean
public UserServices userServices() {
return mock(UserServices.class);
} //and many more of the like
}
@Autowired
private UserServices userServices; //and all the others too
@Test
public void testAfoo() throws Exception {
//....
template.setDefaultEndpointUri("direct://getTheData");
template.sendBody(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonNode));
//...
}
}
调试时在抽象超类中:
@Autowired
public ClientServices clientServices;
//...
String clientNumber=clientServices.getLoggedInNumber(); //clientServices is null and not mocked!
//...
解决方案
推荐阅读
- testing - should E2E be run in production
- wpf - WPF - HorizontalAlignment="Right" does nothing
- amazon-sagemaker - SageMaker Estimator fit job never ends
- spring-data-jpa - 使用 queryDSL 和 Spring Data JPA 查询同一属性的多个值
- kubernetes - 在不破坏集群的情况下更改容器运行时
- vue.js - v-for:数组元素和属性的解构
- python - matplotlib:插入轴的事件处理和导航
- sql - 日期转换问题 ORACLE SQL
- excel - 在锁定单元格上粘贴excel中的值
- java - log4j2 - 一个附加程序可以“同时”管理多个文件吗?