我已经使用量角器+黄瓜编写了第一个角度2的验收测试,当我调用table.filter时,浏览器会挂起并超时,直到超时时间。
我正在按照预期使用柴 -
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
以下代码不起作用。
var grid = $$(".table tr");
grid.filter(function (row) {
var cells = row.$$('td');
expect(cells.get(0).getText()).to.eventually.equal(factoryName).and.notify(done);
我设法通过将上面的代码替换为:
来使我的场景通过var grid = $$(".table tr");
for (var i = 1; i < grid.count() ; i++) {
var cells = grid.get(i).$$('td');
expect(cells.get(0).getText()).to.eventually.equal(factoryName).and.notify(done);
}
我很难找到 table.filter 导致超时的原因。
任何人都可以帮我发表文章/帖子,如何将这些steps.js转换为 TypeScript ,这是在angular2中测试的正确方法吗?
答案 0 :(得分:1)
.filter()
期望过滤器函数从中返回(布尔值或解析为布尔值的promise),以决定是否跳过数组中的元素或不是)。
据我所知,你的意思是:
var grid = $$(".table tr");
var desiredRow = grid.filter(function (row) {
var cells = row.$$('td');
return cells.first().getText().then(function(cellText) {
return cellText === factoryName;
});
}).first();
// do something with the desiredRow
或者,如果您打算检查每行的第一个单元格是否等于factoryName
,您应该/可以使用each()
:
var grid = $$(".table tr");
grid.each(function (row) {
var cells = row.$$('td');
expect(cells.first().getText()).to.eventually.equal(factoryName);
});
或者,您可以使用first-of-type
CSS selector pseudo-class找到每一行的第一个单元格,然后断言该数组的所有元素都具有factoryName
值:
var cells = $$(".table tr td:first-of-type");
// example for 2 rows
// for N rows, http://stackoverflow.com/questions/14832603/check-if-all-values-of-array-are-equal
expect(cells.getText()).toEqual([factoryName, factoryName]);