Assert数组包含Chai数组

时间:2015-09-01 15:19:40

标签: javascript chai

我正在尝试评估从作为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);
    });

任何人都可以帮忙吗? 感谢

1 个答案:

答案 0 :(得分:3)

您可以将 include members()结合使用。

  

断言目标是集合的超集,或者目标和集合具有相同的严格相等(===)成员。或者,如果设置了深度标志,则会比较集合成员的深度相等性。

你的断言变成:

exp(table.getData()).to.eventually.deep.include.members([actualBalances]);

使用 标志确保chai将比较两个数组的深层内容。

此外,只有当数组内的顺序相同时,这才有效。您可能想要对它们进行排序。

I wrote a small example here做你想做的事。它使用'应该'界面而不是'期待',但这没关系。