我有一个这样的@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 {
所以没有必要试图覆盖豆子,我把这复杂化得太多了。