模拟在@ConfigurationProperties类中定义的@Bean

时间:2017-11-17 16:05:46

标签: spring spring-boot junit mockito

我有一个像这样的@ConfigurationProperties类:

const id = getId() // you've id from somewhere
const actions= state.getIn(['allRetrospectivesMap', id, 'current_stage', 'actions']); // Note: state is your immutable data.

我正在将它注册为bean,所以我可以在Spring调度程序的注释中引用它:

@ConfigurationProperties(prefix = "myprops", ignoreUnknownFields = false)
@Configuration
public class MyProperties {

   private Long mySchedulerRate;

   @Bean
   public Long mySchedulerRate() {
       return this.mySchedulerRate;
   } 

}

但是,我现在想编写一个单元测试,我希望能够为bean'mySchedulerRate'设置不同的值。对于@ConfigurationProperties类的模拟/间谍似乎无法工作,因为在将存根设置为返回我想要的值之前调度程序已设置好。

实现我想做的最简单的方法是什么?

1 个答案:

答案 0 :(得分:2)

现在管理解决这个问题。我正在运行@SpringBootTest,我意识到你可以在特定测试类的注释中覆盖属性。

这对我有用:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyApp.class, properties = "myprops.my-scheduler-rate=1000")
public class MyTest {

所以不需要尝试覆盖bean,我太过于复杂了。