柴测试对象数组以“包含类似”对象子匹配项

kub*_*b1x 3 chai

好。我在这里尝试阅读其他问题,但仍然找不到简单的答案。

如何使用chai断言数组中的部分对象匹配?类似于以下内容:

var expect = require('chai').expect;
var data = [ { name: 'test', value: 'bananas' } ];
expect(data).to.be.an('array').that.contains.somethig.like({name: 'test'});
Run Code Online (Sandbox Code Playgroud)

为了澄清,我的意图是尽可能接近所提供的示例。

  • 链接到.be.an('array')和之后
  • 只提供部分对象作为参数(与chai-subset不同)。

我真的以为那expect(data).to.be.an('array').that.deep.contains({name: 'test'});可以用,但是因为不是部分比赛而失败了,我有点儿被搞砸了。

kub*_*b1x 6

由于chai-like@0.2.14以下方法将起作用:

var chai = require('chai'),
    expect = chai.expect;

chai.use(require('chai-like'));
chai.use(require('chai-things')); // Don't swap these two

expect(data).to.be.an('array').that.contains.something.like({name: 'test'});
Run Code Online (Sandbox Code Playgroud)

  • 您使用“ chai”插件的顺序确实很重要。让他们以正确的方式解决了我的问题。 (2认同)