Я новичок в среде Spring и у меня есть вопрос о ее возможностях внедрения зависимостей с помощью Spring Context.
Это класс, для которого я пытаюсь написать интеграционный тест:
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));
}
Однако все тесты не дают результатов, говоря, что я вызывал метод несколько раз. Я могу только предположить, что компонент UserService создается один раз в начале всех тестов, но не перезагружается после каждого теста.
В моей тестовой конфигурации я использую следующий xml, чтобы решить, какие бины вводить:
<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>
Есть идеи?