javascript - 单击后如何测试显示元素?

标签 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")始终为false,在实际页面中此方法很好,有什么建议吗?

最佳答案

在显示/隐藏的元素上有一个动画。您需要在超时后放入断言。由于只检查它是否是':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

关于javascript - 单击后如何测试显示元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27158945/

相关文章:

node.js - 在每个文本(Mocha,Elastic)之前清理索引

javascript - TypeError:使用nodejs,selenium和mocha时,test.describe不是函数

javascript - 创建脚本以将 Google Closure 用于多个 javascript 文件

javascript - 创建帐户时的 Route.go() 不起作用 (METEOR)

javascript - 使用Google Analytics(分析)捕获触摸事件?

javascript - 使用 NPM 包和 Meteor.wrapAsync 的异步问题

meteor - 使用 MeteorJS 的 LinkedIn API

node.js - 在mocha单元测试中,如何模拟全局变量?

javascript - 使用 clearTimeout 后 setTimeout 不起作用

javascript - 获取输入字段的值,该值动态放置(不通过js)onclick