自分のクラスはAutowired UserServiceできません - NullPointerExceptionをスローします。私はUserValidatorクラスをテストする方法を探したいと思います。 ExistingValidationRuleクラスにモックを挿入する方法がわかりません。新しいオブジェクトのモックを初期化する
public class ExistingValidationRule implements RegistrationRule<User> {
@Autowired
private UserService service;
@Override
public void validate(User user, Errors errors) {
service.find(user, errors);
}
}
@Component
public class UserValidator implements Validator {
@Override
public void validate(Object o, Errors errors) {
User user = (User) o;
rules.add(new ExistingValidationRule());
for(RegistrationRule<User> rule : rules){
rule.validate(user, errors);
}
}
}
public class UserValidatorTest {
@InjectMocks
private UserValidator userValidator;
@InjectMocks
private ExistingValidationRule existingValidationRule;
@Mock
private UserService service;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testValidUser() throws Exception{
userValidator.validate(createdUser,errors);
}
Spring Beanインスタンスを作成するために 'new'を使うと、Spring BeanインスタンスはもはやSpring Beanインスタンスではないため、このインスタンスが存在することを知る方法がないSpringによってautowiredできません。 UserValidatorにExistingValidationRuleインスタンスをオートワイヤします。 –
あなたの質問のほとんどが投票されると、多くの人を悩ますようなことが起こっています。恐らく宿題の欠如が答えです。 –