1

現在、WicketTester の startPanel メソッドを使用してパネルをテストしています。これらのパネル内では、getPage().getPageParameters() を使用して PageParameters を使用してデータにアクセスすることがよくあります。ただし、startPanel メソッドは DummyPage のページ パラメータを初期化しません。また、ページ パラメータを設定する機能も提供しません。

パネル テスト中にページ パラメータを設定するにはどうすればよいですか?

4

3 に答える 3

1

それは本当にそれを行う方法ですか?startPanel はすでにダミー ページを作成していますが、ページ パラメータはありません。あなたのアプローチを使用すると、パネルが 2 つのページに接続されますが、これは私にとって最適なソリューションとは思えません。現在、WicketTester を startPanel(Panel, PageParameters) 関数で拡張しています。

public Panel startPanel(final TestPanelSource testPanelSource, final PageParameters parameters) {
    return (Panel) startPage(new ITestPageSource() {
        public Page getTestPage() {
            return new DummyPanelPage(testPanelSource, parameters);
        }
    }).get(DummyPanelPage.TEST_PANEL_ID);
}

ページパラメーターコンストラクターを使用して新しいダミーパネルページを作成しました

public class DummyPanelPage extends WebPage {

    /** 
     * The dummy <code>Panel</code> <code>Component</code> id.
     */
    public static final String TEST_PANEL_ID = "panel";

    /**
     * Default constructor.
     * @param testPanelSource <code>TestPanelSource</code>
     */
    public DummyPanelPage(final TestPanelSource testPanelSource, final PageParameters parameters) {
        super(parameters);
        add(testPanelSource.getTestPanel(TEST_PANEL_ID));
    }

}

なぜこの機能が Apache によってそのまま提供されないのか、私には理解できません。

于 2010-02-08T22:05:07.157 に答える
1

PageParameters個人的には、ビアを取得することgetPage().getPageParameters()は次善の方法だと思います。

ご覧のとおり、パネルからページへの依存関係が導入され、それらが密結合になり、テストが難しくなります。

PageParameters内の fromにアクセスする必要がある場合はPanel、これらを受け入れるコンストラクターを作成して注入します。

private PageParameters params;

public MyPanel (String id, Model<T> model, PageParameters params) {
    super(id, model);
    this.params = params;
    ...
}

このようにしてParameters、 内で fromを使用し、テストで想像できる任意のものを使用してPanelを構築し、不利であることが判明した結合を回避できます。PanelPageParameters

于 2011-03-29T11:00:02.487 に答える
0

すでに作成されているページとパネルで、TestPanelSourceの匿名(またはサブクラス)を使用できます。

final WebPage parameterPage = new WebPage(pageParmeters);
final Panel panelUnderTest = .... create panel here ....;
parameterPage.add(panelUnderTest);
wicketTester.startPanel(new TestPanelSource(){
    public Panel getTestPanel(final String panelId) {
        return panelUnderTest;
    }
});

これを頻繁に使用する場合は、TestPanelSourceのサブクラスが、パラメーターをサブクラスのコンストラクターやその他の構成可能な項目に渡すことができるようにするのに最適な場合があります。

于 2010-02-08T18:21:59.880 に答える