我正在尝试评估从作为2D数组的表(table.getData())返回的数据是否包含另一个数组。
在控制台中,预期数据出现在从table.getData()调用返回的2D数组中,但断言失败。
this.Then(/^I see my account balances as follows:$/, function (tableData, done) {
var balanceAggregationPage = new BalanceAggregationPage(this.app.pagesContainer),
table = balanceAggregationPage.getAccountsTable();
var rows = tableData.getRows();
rows.shift();
var actualBalances = [];
rows.syncForEach(function (item) {
var row = item.raw();
row[7] = moment(parseInt(row[7], 10)).format('DD MMM YYYY hh:mm');
actualBalances.push(row);
});
exp(table.getData()).to.eventually.include(actualBalances).notify(done);
});
任何人都可以帮忙吗? 感谢
答案 0 :(得分:3)
您可以将 include 与members()结合使用。
断言目标是集合的超集,或者目标和集合具有相同的严格相等(===)成员。或者,如果设置了深度标志,则会比较集合成员的深度相等性。
你的断言变成:
exp(table.getData()).to.eventually.deep.include.members([actualBalances]);
使用 深 标志确保chai将比较两个数组的深层内容。
此外,只有当数组内的顺序相同时,这才有效。您可能想要对它们进行排序。
I wrote a small example here做你想做的事。它使用'应该'界面而不是'期待',但这没关系。