私はそのような 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 は内部の@Autowiredforを確認し、コンテキスト内で for を見つけようとします。明らかに失敗し、例外がスローされます。クラスごとにモックを持つコンテキストを作成できますが、それはできません。MyDaoMyService
Bean のフィールドを注入しないように Spring に指示する方法や、コントローラーでテストする必要がある 1 つのモックを単に注入する別の方法はありMockMvcますか?