Spring 测试 - 使用真正的 bean 创建测试 bean
Spring tests - use real bean to create test bean
我使用 Spring,并创建了一个使用 SpringRunner 加载上下文的测试。
我有一个看起来像这样的豆子:
@Bean
public Properties kafkaStreamsProperties(){
final Properties props = new Properties();
props.put("A", "B");
props.put("C", "D");
return props;
}
我想在我的测试中扩展它以包含 属性 "E" --> "F".
我可以在内部 @TestConfiguration class 中轻松完成,如下所示:
public class test{
public static class MyConfig{
@Bean
public Properties kafkaStreamsProperties(){
final Properties props = new Properties();
props.put("A", "B");
props.put("C", "D");
props.put("E", "F");
return props;
}
}
}
但是当我更改生产代码时,我将不得不 "remember" 也更改测试。有什么方法可以让我从上下文中获取实际的 bean 并 "replace" 使用我的(使用实际的 bean)?
在 Spring 测试中你有 @MockBean 来模拟一个 bean 或 @SpyBean
来监视一个 bean:
Spring Boot includes a @MockBean annotation that can be used to define a Mockito mock for a bean inside your ApplicationContext. You can use the annotation to add new beans or replace a single existing bean definition.
Additionally, you can use @SpyBean to wrap any existing bean with a Mockito spy
我使用 Spring,并创建了一个使用 SpringRunner 加载上下文的测试。
我有一个看起来像这样的豆子:
@Bean
public Properties kafkaStreamsProperties(){
final Properties props = new Properties();
props.put("A", "B");
props.put("C", "D");
return props;
}
我想在我的测试中扩展它以包含 属性 "E" --> "F".
我可以在内部 @TestConfiguration class 中轻松完成,如下所示:
public class test{
public static class MyConfig{
@Bean
public Properties kafkaStreamsProperties(){
final Properties props = new Properties();
props.put("A", "B");
props.put("C", "D");
props.put("E", "F");
return props;
}
}
}
但是当我更改生产代码时,我将不得不 "remember" 也更改测试。有什么方法可以让我从上下文中获取实际的 bean 并 "replace" 使用我的(使用实际的 bean)?
在 Spring 测试中你有 @MockBean 来模拟一个 bean 或 @SpyBean
来监视一个 bean:
Spring Boot includes a @MockBean annotation that can be used to define a Mockito mock for a bean inside your ApplicationContext. You can use the annotation to add new beans or replace a single existing bean definition.
Additionally, you can use @SpyBean to wrap any existing bean with a Mockito spy