4

Angular Scenario Runnerの E2E テストを書いているときに、query()次の方法に出会いました。

element(selector, label).query(fn)

ドキュメントには次のように記載されています。

関数 fn(selectedElements, done) を実行します。ここで、selectedElements は指定された jQuery セレクターに一致する要素であり、done は fn 関数の最後に呼び出される関数です。ラベルはテスト出力に使用されます。

そこで、html ページの一連のボタンの it-case を作成しました。

it('should display all buttons on page load', function () {
    var buttonText = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
    element('button', 'UI elements').query(function (selectedElements, done) {
        selectedElements.each(function (idx, elm) {
            expect(elm.innerText in buttonText).toEqual(true);
        });
        done();
    });
});

テスト実行の結果、失敗した 10 個の期待句のリストとテキストを受け取りました。

true が期待されていましたが、未定義でした

中間デバッグは、elm.innerText in buttonText条件が真実であることを示しました。

だから私の質問は、何がうまくいかなかったのですか?done()メソッドの使い方が間違っていませんか?

4

2 に答える 2

0

「expect」行を除いて、コードは正しいように見えます。

expect(elm.innerText in buttonText).toEqual(true);

「期待」するパラメータは未来です。ドキュメントから、すべての API ステートメントは future objectelm.innerText返すため、futureを返しますが、返さelm.innerText in buttonTextないため、未定義になります。おそらく、これをコーディングする方法は次のようになります。

expect(elm.innerText).toMatch(/\d/);
于 2013-02-22T21:40:18.110 に答える