4

我正在使用 mocha 单元测试,我需要测试单击单选按钮后元素是否可见。换句话说,我有两个使用 javascript 切换两个元素的单选按钮,我想对此进行测试。

这是我的测试:

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);
});

第一个测试通过,但第二个没有。问题是这$("#completed-task").is(":visible")总是错误的,在实际页面中这工作得很好,有什么建议吗?

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 回答