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

この問題は、この場合にモックを使用するのは得策ではないことを示しています。

実際の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 に答える