4

ウィケットアプリケーションで使用する次のパネルがあり、addPatternValidator(String pattern)を呼び出すとPatternValidatorがTextFieldに追加されることを確認するテストを作成したいと思います。

public class StringTextBoxPanel extends Panel {
  private static final long serialVersionUID = 1L;

  private String stringModel = new String();
  private TextField<String> textfield;
  private Label label;

  public StringTextBoxPanel(String id, String labelText) {
    super(id);
    label = new Label("label", labelText);
    textfield = new TextField<String>("textField", new PropertyModel<String>(this, "stringModel"));
    add(label);
    add(textfield);
  }

  public String getValue() {
    return textfield.getValue();
  }

  public void addPatternValidator(String pattern) {
    this.get(textfield.getId()).add(new PatternValidator(pattern));
  }

  public void setRequired() {
    textfield.setRequired(true);
  }
}

WicketTesterでそれを行うことは可能ですか?

4

2 に答える 2

3

WicketTesterでFormTesterを起動し、TextFieldに不正な値を「入力」し、FormTesterにフォームを送信してもらいます。

a)モデルを確認します。無効な値はモデルに書き込まれません

b)エラーメッセージを確認します

しかし、真実を伝え、求められていない私の考えを提供するために、なぜあなたがこれをテストしたいのか、私にはよくわかりません... addメソッドはwicketの一部であり、あなたではなくWicket開発者によってテストされるべきです。同じことがPatternValidatorクラスにも当てはまりますが、パターンをテストすることもできます。このメソッドの残りのコードについては...それは些細なことであり、私に関する限り、テストを正当化することはできません。

付録(コメントで述べたように、FormTesterを呼び出すよりもメソッドが呼び出されたことを確認する簡単な方法があります。このスニペットはこのエディターにハッキングされただけなので、IDEは適用されたものをチェックしません):

private Boolean methodCalled = false;

@Test
public void testSomething() {
    WicketTester tester = new WicketTester();
    tester.startComponentInPage(new StringTextBoxPanel("id", "someText") {

        @Override
        public void addPatternValidator(String pattern) {
            methodCalled = true;
        }
    });
    AssertTrue(methodCalled);
}
于 2012-08-02T07:24:01.847 に答える
2

フォーム送信後にエラー/情報メッセージを確認しました:

wicketTester.assertHasNoErrorMessage();
wicketTester.assertHasNoInfoMessage();
wicketTester.getMessages(FeedbackMessage.FATAL); //or another kind of messages
于 2012-08-03T04:28:32.743 に答える