Tôi mới làm quen với khung công tác lò xo và có câu hỏi về khả năng tiêm phụ thuộc của nó bằng cách sử dụng bối cảnh mùa xuân.Tạo một cá thể đậu mới sau mỗi lần kiểm tra đơn vị
Đây là lớp học Tôi cố gắng để viết một bài kiểm tra tích hợp cho:
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());
}
}
Trong các thử nghiệm của tôi (sử dụng Mockito) Tôi muốn đảm bảo với bốn mục được gọi là như vậy tôi có thể tạo các xét nghiệm như:
public void testRegisterCallsValidateInValidator() {
userService.registerUser(testUser);
verify(userService.getValidator(), times(1)).validate(any(User.class), any(Errors.class));
}
Tất cả các thử nghiệm đều thất bại khi nói rằng tôi đã gọi phương thức nhiều lần. Đoán duy nhất của tôi là bean UserService được tạo một lần ở đầu tất cả các thử nghiệm nhưng không được tải lại sau mỗi lần kiểm tra.
Trong cấu hình thử nghiệm của tôi tôi sử dụng xml sau đây để quyết định đậu để tiêm:
<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>
Bất kỳ ý tưởng?
bạn có nhiều phương pháp thử hay chỉ một phương pháp bạn đã dán? – ggreiner
Tôi có bốn phương pháp thử nghiệm (1 trong số đó tôi đã dán). Tôi nhận được ba bài kiểm tra thất bại nói rằng tôi đã gọi các phương pháp tôi đang cố gắng để kiểm tra tương ứng 2, 3 và 4 lần. – geoffreydv