【发布时间】:2017-04-29 20:29:44
【问题描述】:
我在测试我的 node.js 应用程序中是否缺少元素时遇到问题。
我有一个enterBtn 按钮,单击它时会显示resultsTable 和clearBtn。 enterBtn 始终存在。
我正在尝试测试当我单击 clearBtn 时 resultsTable 会消失,但我遇到了问题。
'use strict';
const chai = require('chai');
chai.use(require('chai-as-promised'));
chai.should();
const expect = chai.expect;
require('./lib/test-helper');
const until = protractor.ExpectedConditions;
describe('My App', function() {
it('should clear resultsTable clearBtn is clicked', function(){
var resultsTable = element(by.id('results-table'));
clearBtn.click();
expect(resultsTable.isPresent()).to.eventually.be.false;
});
});
我也尝试过这样做:
resultsTable.isPresent().then(function(bln) {
expect(bln).to.equal(false);
});
这也没有用:
"Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test."
但是,如果我尝试使用下面的代码测试始终存在的enterBtn 的存在,它就可以工作。
var enterBtn = element(by.id('enter'));
expect(enterBtn.isPresent()).to.eventually.be.true;
我不知道发生了什么......
任何帮助将不胜感激!谢谢。
【问题讨论】:
-
你能展示完整的测试吗?
-
查看摩卡的这个答案。检查您使用的依赖项/配置设置很重要。验证后,请提供有关您正在测试的应用类型和量角器配置的更多信息。 stackoverflow.com/questions/42839202/…
-
@MariaInesParnisari 我添加了更多细节,希望更有意义。
-
你不应该把
var resultsTable = element(by.id('results-table'));的行放在调用click()之后吗? -
@MariaInesParnisari 实际上,在我的测试脚本中,我在描述的正下方定义了一堆变量。我也在那里定义了输入按钮,并且在积极的情况下有效。这只是我期待一个不起作用的错误场景的地方 o.O
标签: javascript protractor chai chai-as-promised