在柴中比较数组

Ali*_*ssa 9 arrays node.js chai

我正在用chai和chai-as-promise(和更多框架,但在这种情况下无关紧要)编写一些测试,我需要检查我从网页获得的数组是否与预定义数组相同.我试图使用expect(arrayFromPage).to.eventually.deep.equal(predefinedArray),但它不起作用,因为页面上的元素顺序有时是不同的(这是好的,我不需要检查它们是否在相同的顺序).

我找到了一种通过使用来解决问题的方法expect(listFromPage).to.eventually.include.all.members(predefinedArray),但我想知道是否有更好的解决方案.

在我的解决方法中最让我烦恼的是,我只保证它predefinedArray是子集listFromPage,而不是它们由相同的元素组成.

所以,我想知道是否有将传递一个断言[1,2,3][3,2,1],但不[1][1,2,3][1,2,3,4][1,2,3].

我知道我可以使用一些第二个期望(比较长度,或其他东西),但我想知道是否有一个单行解决方案.

sin*_*enm 20

看到这被标记为早先解决,我尝试做了与接受的答案相同的事情.它可能当时有效,但似乎不再起作用了:

expect([1, 2, 3, 4]).to.have.all.members([2, 4, 3, 1]);
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

AssertionError: expected 1 to be an array
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现了一个拉动请求,在2013年又增加了这个功能:

https://github.com/chaijs/chai/pull/153

所以现在这样做的官方方式是这样的:

expect([1, 2, 3, 4]).to.have.same.members([2, 4, 3, 1]);
Run Code Online (Sandbox Code Playgroud)

为了完整性,这是两个不同集合产生的错误:

AssertionError: expected [ 1, 2, 3, 4 ] to have the same members as [ 4, 3, 1 ]
Run Code Online (Sandbox Code Playgroud)

希望这有助于任何人现在寻找相同的答案.:-)


pde*_*nes 5

文档中并不完全清楚,但.to.have.all.members似乎有效。我只能找到有关此功能的提及.keys,但看起来它也适用于.members数组。