模拟@ConfigurationProperties类中定义的@Bean



我有一个这样的@ConfigurationProperties类:

@ConfigurationProperties(prefix = "myprops", ignoreUnknownFields = false)
@Configuration
public class MyProperties {
   private Long mySchedulerRate;
   @Bean
   public Long mySchedulerRate() {
       return this.mySchedulerRate;
   } 
}

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

@Scheduled(fixedRateString = "#{@mySchedulerRate}")
public void runScheduledUpdate() {
   ...
{

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

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

现在设法解决这个问题。我正在运行一个@SpringBootTest,我意识到您可以在特定测试类的注释中覆盖此处的属性。

这对我有用:

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

所以没有必要试图覆盖豆子,我把这复杂化得太多了。

相关内容

  • 没有找到相关文章

最新更新