Ale*_*her 5 javascript mocha.js node.js chai
我assert为此使用 chai 的语法。
我知道如果我想检查对象数组中的特定对象,我可以这样做:
assert.deepInclude(
[
{ name: 'foo', id: 1 },
{ name: 'bar', id: 2 }
],
{ name: 'foo', id: 1 }
)
Run Code Online (Sandbox Code Playgroud)
哪个应该通过。
但是,如果我正在检查的对象中只有 1 个属性怎么办?像这样:
assert.deepInclude(
[
{ name: 'foo', id: 1 },
{ name: 'bar', id: 2 }
],
{ name: 'foo' }
)
Run Code Online (Sandbox Code Playgroud)
我仍然希望它通过,但它告诉我它失败了,因为那个确切的对象不存在。
使用chai-subset这可以很容易地完成:
const chai = require('chai');
const chaiSubset = require('chai-subset');
chai.use(chaiSubset);
it('should contain subset', () => {
const actual = [
{ name: 'foo', id: 1 },
{ name: 'bar', id: 2 },
];
expect(actual).to.containSubset([{ name: 'foo' }]);
});
Run Code Online (Sandbox Code Playgroud)
Afaik 没有办法chai单独做到这一点,但你可以编写自己的函数:
function containsPartialObj(arr, obj) {
return arr.some(entry => {
const keys = Object.keys(obj);
return keys.every(key => obj[key] === entry[key]);
});
}
it('should contain subset', () => {
const actual = [
{ name: 'foo', id: 1 },
{ name: 'bar', id: 2 },
];
expect(containsPartialObj(actual, { name: 'foo' })).to.be.true;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2887 次 |
| 最近记录: |