をテストするためのさまざまな実装を注入は、私は以下のクラスを持っている
public class SomeService {
@Inject
private Emailer emailer;
}
を質問は、私のサービス・テスト・クラス(SomeServiceTest
)では、 NoOpEmailer
を使用するサービスにEmailer
を挿入するにはどうすればよいですか?私はDIフレームワークのためにSpringを使用しています。
をテストするためのさまざまな実装を注入は、私は以下のクラスを持っている
public class SomeService {
@Inject
private Emailer emailer;
}
を質問は、私のサービス・テスト・クラス(SomeServiceTest
)では、 NoOpEmailer
を使用するサービスにEmailer
を挿入するにはどうすればよいですか?私はDIフレームワークのためにSpringを使用しています。
あなたのクラスには、この値を注入するReflectionTestUtils#setField(Object target, String name, Object value)
を使用する
はない場合、春でこれを行うようです。これにより、同じBean(EmailerとNoOpEmailer)の2つの異なる実装を提供することができます。テストで@Profile( "test")アノテーションを使用してテストプロファイルをアクティブにすると、no op beanが注入されます。
フィールドパッケージのスコープを非公開ではなく非公開にする可能性を考えたことがあります。ユニットテスト中にこのフィールドを設定するほうがずっと簡単です(テストクラスがあなたのサブジェクトと同じパッケージにあると仮定します)。あなたは春3.1を使用することができます場合は、Profilesを使用することができます
どの依存性注入フレームワークを使用しますか? GUICEでそれをやっているのは、春とは違って... – creechy
申し訳ありません、私は春を使っています。私はそれを質問に入れておくべきだった。しかし、それは「春」とタグ付けされています。 – ryanprayogo