对于Chai中的数组,等效于rspec=~
Equivalent to rspec =~ for arrays in Chai
Chai,matchers与rspecs =~
有一个等式吗(这意味着拥有所有元素,但顺序无关紧要。
正在传递的示例
[1, 2, 3].should =~ [2, 1, 3]
失败
[1, 2, 3].should =~ [1, 2]
您可以使用最新Chai版本中提供的members
测试:
expect([4, 2]).to.have.members([2, 4]);
expect([5, 2]).to.not.have.members([5, 2, 1]);
我认为没有,但你可以通过构建一个助手来轻松创建一个:
var chai = require('chai'),
expect = chai.expect,
assert = chai.assert,
Assertion = chai.Assertion
Assertion.addMethod('equalAsSets', function (otherArray) {
var array = this._obj;
expect(array).to.be.an.instanceOf(Array);
expect(otherArray).to.be.an.instanceOf(Array);
var diff = array.filter(function(i) {return !(otherArray.indexOf(i) > -1);});
this.assert(
diff.length === 0,
"expected #{this} to be equal to #{exp} (as sets, i.e. no order)",
array,
otherArray
);
});
expect([1,2,3]).to.be.equalAsSets([1,3,2]);
expect([1,2,3]).to.be.equalAsSets([3,2]);
flag
请注意这不是一个无序的相等测试,而是设置相等。任何一个数组中都允许有重复项;例如:expect([1,2,3]).to.be.equalAsSets([1,3,2,2]);
http://www.rubydoc.info/gems/rspec-expectations/frames#Collection_membership
expect([4, 2]).to match_array([2, 4])
相关文章:
- 如何在Mocha/Chai中测试JS原型(非模块)
- Node.js-chai是一个item对象
- Chai深度包含了对嵌套对象的断言
- Mocha/Chai测试链接到函数返回断言错误
- 如何按照承诺使用mocha/chai/chai测试ES7异步函数
- 在http服务单元测试中使用request-js时,chai.request不是一个函数
- RSpec和Capybara:如何获得元素的水平和垂直位置
- 用一个数组应用Chai可链接的getters
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- Chai 期望 [函数] 抛出一个(错误)未通过测试(使用 Node)
- 在JavaScript中测试一个无效参数w/Chai
- Chai正如承诺:当承诺抛出错误时,处理错误
- 这是链接chai.js's期望在守夜
- 按照承诺,通过与chai的函数调用验证已解析承诺的内容
- 当“new constructor()”与mocha和chai一起使用时,我如何断言throw
- rspec使用JavaScript和Pusher测试值更新
- 不可变的Chai断言错误,而预期的结果等于
- 如何在我的RSpec/Capibara/Selenium测试中需要Javascript文件进行测试
- 给Chai/Mocha一份应该包括在内的部分钥匙清单
- 对于Chai中的数组,等效于rspec=~