Я хочу протестировать свой весенний контроллер mvc.
Контроллер имеет службу:
@Autowired
UserService userService
И моя пользовательская служба зависит от (автоматически подключенного) моего UserDao и некоторых других служб, таких как mongoDb и т. Д.
Теперь я хочу, чтобы бизнес-логика была протестирована в моем UserService, но, конечно же, я хочу имитировать ответы от моих UserDao и Mongodb и т. д.
Как правильно настроить модульный тест?
Могу ли я повторно использовать xml-файл контейнера Spring, содержащий все мои bean-компоненты и т. д., или создать новый one? (я предполагаю, что мне нужно задействовать здесь контейнер spring)
Если вы хотите получить какие-либо рекомендации по этому поводу, любые учебные пособия были бы очень признательны.
Обновление
Что мне показалось странным, так это то, что для моего контроллера Spring (который не реализуется из контроллера) я смог получить доступ к моей частной переменной, чтобы вручную настроить мою службу, например:
@Controller
public class UserController {
@Autowired
UserService userService;
}
И в моем модульном тесте Я мог бы сделать:
UserController controller = new UserController();
controller.userService = ....
Но для моей службы UserService, которая имеет автоматическое подключение UserDao, я не могу получить доступ к свойству userDao:
UserService userService = new UserServiceImpl();
userService.userDao = .... // not available
Это имеет смысл, поскольку оно является частным, но как оно работает на моем контроллере?