2

我正在为验证器编写 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

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

最好的,普拉萨德

4

1 回答 1

1

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

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

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

launchQueryValidator.validate(launchQueryForm, errors);

assertEquals("mismatch.LaunchQueryForm.orgId", 
    errors.getFieldError("orgId").getCode());
于 2012-11-30T15:04:34.583 回答