2012-01-31 26 views
2

をテストするためのさまざまな実装を注入は、私は以下のクラスを持っている

public class SomeService { 
    @Inject 
    private Emailer emailer; 
} 

を質問は、私のサービス・テスト・クラス(SomeServiceTest)では、 NoOpEmailerを使用するサービスにEmailerを挿入するにはどうすればよいですか?私はDIフレームワークのためにSpringを使用しています。

+0

どの依存性注入フレームワークを使用しますか? GUICEでそれをやっているのは、春とは違って... – creechy

+0

申し訳ありません、私は春を使っています。私はそれを質問に入れておくべきだった。しかし、それは「春」とタグ付けされています。 – ryanprayogo

答えて

3

あなたのクラスには、この値を注入するReflectionTestUtils#setField(Object target, String name, Object value)を使用する

はない場合、春でこれを行うようです。これにより、同じBean(EmailerとNoOpEmailer)の2つの異なる実装を提供することができます。テストで@Profile( "test")アノテーションを使用してテストプロファイルをアクティブにすると、no op beanが注入されます。

1

フィールドパッケージのスコープを非公開ではなく非公開にする可能性を考えたことがあります。ユニットテスト中にこのフィールドを設定するほうがずっと簡単です(テストクラスがあなたのサブジェクトと同じパッケージにあると仮定します)。あなたは春3.1を使用することができます場合は、Profilesを使用することができます

関連する問題