統合テストでモックを使用しようとしていますが、うまくいきません。Spring 3.1.1 と Mockito 1.9.0 を使用しています。状況は次のとおりです。
@Component
public class ClassToTest {
@Resource
private Dependency dependency;
}
と
@Component
public class Dependency {
@Resource
private NestedDependency nestedDependency;
}
さて、Spring の JavaConfig を使って ClassToTest の統合テストを行いたいと思います。これは私が試みたものであり、うまくいきません:
@Test
@ContextConfiguration
public class ClassToTestIntegrationTest {
@Resource
private ClassToTest classToTest;
@Resource
private Dependency mockDependency;
@Test
public void someTest() {
verify(mockDependency).doStuff();
// other Mockito magic...
}
@Configuration
static class Config {
@Bean
public ClassToTest classToTest() {
return new ClassToTest();
}
@Bean
public Dependency dependency() {
return Mockito.mock(Dependency.class);
}
}
}
質問を理解しやすくするために、セットアップを簡素化しました。実際には、より多くの依存関係があり、それらの一部のみをモックしたいだけです。他のものは、prod @Configuration クラスからインポートされた構成に基づいて本物です。
結局、アプリケーションコンテキストに NestedDependency タイプの Bean がないことを示す NoSuchBeanDefinitionException が発生します。私はこれを理解していません.SpringはMockitoのモック化された依存関係のインスタンスを受け取り、それを自動配線することさえしないと思いました. これが機能しないため、オブジェクト グラフ全体をモックする必要があります。これは、モックのポイントを完全に無効にします。
助けてくれてありがとう!