私はそのような Bean 構造を持っています (ただし、さらに多くのレベルがあります):
@Controller
public class MyController {
@Autowired
private MyService myService;
}
@Service
public class MyService {
@Autowired
private MyDao myDao;
}
@Repository
public class MyDao {
}
で単体テストMyController
したいMockMvc
。MyController
インスタンスを作成するコンテキストを作成するとMyService
、インジェクション用のインスタンスが期待され、MyDao
インスタンスが期待されます。みたいにモックしてMyService
も(コンポーネントスキャンなし)
@Bean
public MyController myController() {
MyController controller = new MyController ();
return controller;
}
@Bean
public MyService myService() {
return Mockito.mock(MyService.class);
}
Spring は内部の@Autowired
forを確認し、コンテキスト内で for を見つけようとします。明らかに失敗し、例外がスローされます。クラスごとにモックを持つコンテキストを作成できますが、それはできません。MyDao
MyService
Bean のフィールドを注入しないように Spring に指示する方法や、コントローラーでテストする必要がある 1 つのモックを単に注入する別の方法はありMockMvc
ますか?