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