spring-boot - 如何测试依赖注入是否失败?
问题描述
我有一个 spring 集成应用程序,如果提供的属性不正确,我希望我的流程在启动时失败。
例如,我有类似的东西
@ConditionalOnProperty(name = GraphConfig.TRANSFORM_TYPE_KEY, matchIfMissing = true)
在我的代码中,如果此条件评估为真,我会在启动时强制依赖注入失败。
现在我想为此编写一个测试用例。但是使用@SpringBootTest
不起作用,因为在我的测试方法开始之前依赖注入就会失败。
如果依赖注入失败,我怎样才能让我的测试成功?
解决方案
你长得像吗,
public class SpringTEst {
private ConfigurableApplicationContext context;
private ConfigurableEnvironment environment = new StandardEnvironment();
@Test
public void allPropertiesAreDefined() {
load(MultiplePropertiesRequiredConfiguration.class, "property1=value2", "property2=value2");
assertThat(this.context.containsBean("foo")).isTrue();
}
private void load(Class<?> config, String... environment) {
TestPropertyValues.of(environment).applyTo(this.environment);
this.context = new SpringApplicationBuilder(config).environment(this.environment).web(WebApplicationType.NONE)
.run();
}
@Configuration
@ConditionalOnProperty(name = { "property1", "property2" })
protected static class MultiplePropertiesRequiredConfiguration {
@Bean
public String foo() {
return "foo";
}
}
}
如果您仅使用“property1=value2”或_“property5=value2”调用加载方法,上述测试用例将失败。
推荐阅读
- python - 为什么这个显示的字符串索引超出范围?
- reactjs - 首先如何在 redux 中获取初始状态,然后我可以在我的组件方法中使用它?
- python - 具有多个 id 的 pandas 数据帧的滚动平均值
- jquery - 遍历文档中一个元素下的所有元素 > 然后 addClass
- sql - Oracle sql不同的id但相同的值
- azure - 不支持将托管磁盘添加到具有基于 blob 的磁盘的 VM
- .net - 将自定义 IHttpModule 添加到 web.config 会引发 500 错误
- typescript - 打字稿和重载函数的具体柯里化 - 如何?
- r - 使用 read_excel 函数导入 excel 文件:日期列未正确导入
- python - 如何在 Django Rest Framework 中将属性或对象注入到视图中?