osc*_*car 5 junit spring spring-mvc mockito
我有一个自定义 ConstraintValidator:
@Component
public class FooValidator implements ConstraintValidator<FooAnnotation, String> {
@Inject
private FooRepository fooRepository;
@Override
public void initialize(FooAnnotation foo) {
}
@Override
public boolean isValid(String code, ConstraintValidatorContext context) {
Foo foo = fooRepository.findByCode(code);
//My code
}
}
Run Code Online (Sandbox Code Playgroud)
在我的 Junit 测试和 MockMVC 中,我调用了 url,但 fooRepository bean 验证器始终为 null。
如何将其注入我的测试控制器中?我尝试创建一个模拟存储库,但它也是空的。我的源码测试:
public class FooControllerTest {
@InjectMocks
private FooController fooController;
private MockMvc mockMvc;
@Before
public void setup() {
// Process mock annotations
MockitoAnnotations.initMocks(this);
// Setup Spring test in standalone mode
this.mockMvc = MockMvcBuilders.standaloneSetup(fooController)
.setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver())
.build();
}
@Test
public void testSave() throws Exception {
Foo foo = new Foo();
// given
//My code...
// when
// then
// with errors
this.mockMvc.perform(post("/foo/update")
.param("name", "asdfasd")
.sessionAttr("foo", foo))
.andExpect(model().hasErrors())
.andExpect(model().attributeHasFieldErrors("foo", "name"));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
743 次 |
| 最近记录: |