4

モカの単体テストを行っています。ラジオ ボタンをクリックした後に要素が表示されるかどうかをテストする必要があります。つまり、javascript を使用して 2 つの要素を切り替える 2 つのラジオ ボタンがあり、これをテストしたいと思います。

これは私のテストです:

it("Checking #completed-task existance", function (done) {
    chai.assert.equal($("#completed-task").length, 1);
    done();
});

it("Checking #completed-task is visible", function (done) {
    $("#master div.onoffswitch").find("input[data-id='completed-task']").click();
    chai.assert.equal($("#completed-task").is(":visible"), true);
});

最初のテストはパスしますが、2 番目のテストはパスしません。問題は、$("#completed-task").is(":visible")常に false であることです。実際のページでは、これは問題なく機能します。何か提案はありますか?

4

1 に答える 1

-1

表示/非表示になっている要素にアニメーションがあります。タイムアウト後にアサーションを配置する必要があります。':visible' かどうかのみをチェックしているため、アニメーション全体が完了するまで待つ必要はありません。100 ミリ秒 (または 0 ミリ秒) から始めて、さらに必要かどうかを確認します。

例えば:

it("Checking #completed-task is visible", function (done) {
    $("#master div.onoffswitch").find("input[data-id='completed-task']").click();

    // This may be needed to increase the mocha timeout.        
    //this.timeout(100);

    setTimeout(function() {
        chai.assert.equal($("#completed-task").is(":visible"), true);
        done();
    }, 100);
});

この回答には、詳細とドキュメントへのリンクがあります: https://stackoverflow.com/a/15982893/361609

于 2014-11-28T04:14:21.370 に答える