3

私はそのような Bean 構造を持っています (ただし、さらに多くのレベルがあります):

@Controller
public class MyController {
    @Autowired
    private MyService myService;
}

@Service
public class MyService {
    @Autowired 
    private MyDao myDao;
}

@Repository
public class MyDao {

}

で単体テストMyControllerしたいMockMvcMyControllerインスタンスを作成するコンテキストを作成すると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ますか?

4

2 に答える 2