Spring Validator Junit错误

时间:2012-11-30 14:50:27

标签: spring junit validation

我正在为验证器编写junit测试。下面的代码有效:

// initialize errors
errors = createNiceMock(BindingResult.class);
errors.rejectValue("orgId", "mismatch.LaunchQueryForm.orgId");

// activate the mock
replay(errors);

// go ahead and run validate now
launchQueryValidator.validate(launchQueryForm, errors);

// verify the errors
verify(errors);

但是以下在junit中不起作用 - 这里的区别是我发送了一个额外的参数显示在错误消息中,不知道如何为此编写junit?

errors.rejectValue("typeInput", "mismatch.LaunchQueryForm.typeInput",
                           new Object[]
                { launchQueryForm.getTypeInput() }, null);

我遇到的错误是:

java.lang.AssertionError: 
  Expectation failure on verify:
    BindingResult.rejectValue("typeInput", "mismatch.LaunchQueryForm.typeInput", ["X"], null): expected: 1, actual: 0

提前感谢您对此进行调查。

最佳, 普拉萨德

1 个答案:

答案 0 :(得分:1)

这个问题表明在这种情况下使用mock不是一个好主意。

使用真正的BindingResult实现并检查其状态:

BindingResult errors = 
    new BeanPropertyBindingResult(launchQueryForm, "LaunchQueryForm");

launchQueryValidator.validate(launchQueryForm, errors);

assertEquals("mismatch.LaunchQueryForm.orgId", 
    errors.getFieldError("orgId").getCode());