点击后如何测试显示元素?

时间:2014-11-26 21:10:33

标签: javascript meteor mocha mocha-web-velocity

我正在使用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")总是假的,在实际的页面中这个工作得很好,有什么建议吗?

1 个答案:

答案 0 :(得分:-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