我正在为验证器编写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
提前感谢您对此进行调查。
最佳, 普拉萨德
答案 0 :(得分:1)
这个问题表明在这种情况下使用mock不是一个好主意。
使用真正的BindingResult
实现并检查其状态:
BindingResult errors =
new BeanPropertyBindingResult(launchQueryForm, "LaunchQueryForm");
launchQueryValidator.validate(launchQueryForm, errors);
assertEquals("mismatch.LaunchQueryForm.orgId",
errors.getFieldError("orgId").getCode());