Mocking spring controller validator

939 Views Asked by At

I want to unit test this Spring controller method:

@Autowired
private MyValidator validator;

public String register(
    HttpServletRequest request, 
    ModelMap model, 
    Principal principal,
    @PathVariable Plain plain, 
    RedirectAttributes ratts,
    @ModelAttribute @Valid PlainMoreObject pmo, 
    BindingResult result) 
{

    validator.validate(pmo, result);

I'm using JMock. How do I mock the validator in order to test controller by calling

  controller.register(....) ?
1

There are 1 best solutions below

0
Markus On

There is a helper class in Spring called ReflectionTestUtils (link) you can use to inject mocked beans to fields.

@Mock MyValidator validatorMock;
ReflectionTestUtils.setField(controller, "validator", validatorMock);
controller.register(...);