Я новичок в среде Spring, и у меня есть вопрос о его возможностях внедрения зависимостей с использованием контекста Spring.
Это класс, для которого я пытаюсь написать интеграционный тест:
public class UserService {
private Validator validator;
private UserRepository userRepository;
private Encryptor encryptor;
private MailService mailService;
...
public void registerUser(User user) {
user.setPassword(encryptor.encrypt(user.getPassword()));
Errors errors = new BindException(user, "user");
validator.validate(user, errors);
if (errors.getErrorCount() == 0) {
userRepository.addUser(user);
mailService.sendMail(user.getEmail());
}
}
В моих тестах (с использованием Mockito) я хочу убедиться, что вызываются четыре элемента, поэтому я создаю такие тесты, как:
public void testRegisterCallsValidateInValidator() {
userService.registerUser(testUser);
verify(userService.getValidator(), times(1)).validate(any(User.class), any(Errors.class));
}
Все тесты, однако, не говорят Я вызывал этот метод несколько раз. Я могу только предположить, что bean-компонент UserService создается один раз в начале всех тестов, но не перезагружается после каждого теста.
В моей тестовой конфигурации я использую следующий XML-код, чтобы решить, какие bean-компоненты внедрять:
<bean id="userService" class="be.kdg.coportio.services.UserService">
<property name="validator" ref="validator"/>
<property name="userRepository" ref="userRepository"/>
<property name="encryptor" ref="encryptor"/>
<property name="mailService" ref="mailService"/>
</bean>
Есть идеи?