Soy nuevo en el marco de primavera y tengo una pregunta sobre sus capacidades de inyección de dependencia usando Spring Context.Creando una nueva instancia de un bean después de cada prueba de unidad
Ésta es la clase que estoy tratando de escribir una prueba de integración para:
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());
}
}
En mis pruebas (usando Mockito) Quiero asegurar a los cuatro elementos se denominan así que crear pruebas como:
public void testRegisterCallsValidateInValidator() {
userService.registerUser(testUser);
verify(userService.getValidator(), times(1)).validate(any(User.class), any(Errors.class));
}
Sin embargo, todas las pruebas fallan diciendo que he invocado el método varias veces. Mi única conjetura es que el bean UserService se crea una vez al comienzo de todas las pruebas, pero no se vuelve a cargar después de cada prueba.
En mi configuración de prueba que utilice el siguiente código XML para decidir qué frijoles a inyectar:
<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>
¿Alguna idea?
¿tiene varios métodos de prueba, o solo uno que pegó? – ggreiner
Tengo cuatro métodos de prueba (1 de los cuales he pegado). Recibo tres pruebas fallidas que dicen que llamé a los métodos que trato de probar, respectivamente, 2, 3 y 4 veces. – geoffreydv