2017-11-17 14 views
0

@ConfigurationPropertiesクラスで定義されている:私はこのような@ConfigurationPropertiesクラスを持っている

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

    private Long mySchedulerRate; 

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

} 

私は春のスケジューラのための注釈には、それを参照することができますので、私は豆としてそれを登録しています:

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

はしかし、私は今、私は豆に異なる値を設定できるようにしたいユニットテストを書きたい「mySchedulerRate」。 @ConfigurationPropertiesクラスのMocking/Spyingは、スタブが設定されてから目的の値を返す前にスケジューラが設定されているので機能していないようです。

私がしようとしていることを達成する最も簡単な方法は何ですか?

+0

正確に何をテストしたいですか? mySchedulerRateのコードによれば、Long値は何も期待していません。 – pvpkiran

+0

Beanの値を変更しようとしていたので、Long Beanの値を特定のテストで違う値にします。テストしようとしているImが問題に関連したものではありません。 – Plog

+0

この値は、testフォルダのapplication.propertiesで宣言してください。だからあなたがテストするとき、その値は取られるでしょう – pvpkiran

答えて

2

これを今すぐ修正しました。 @SpringBootTestを実行していましたが、特定のテストクラスのアノテーション内でここでプロパティをオーバーライドすることができます。

これが私の仕事:

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

をので、豆を試してみて、オーバーライドする必要、私はこれまでのところあまり過度に複雑ませんでした。

+0

あなたがSpring Runnerを使用した場合、あなたの答えがこのように提案されるのを待っていました。最後に、あなたはそれだけで素早く見つけました:) Great – davidxxx

+1

私はあきらめて頼んでいませんでしたが、私は今まで頭を叩いていました!金曜日に少し遅れて私は思う。とにかくあなたの時間のためにあなたに返済しようとします:) – Plog

+0

時には、光が少し遅く来る:)あなたは優しいです。とにかく、良い答え。 – davidxxx

関連する問題