Node.js 我怎样才能把柴的东西和柴一样的东西结合起来呢?

Node.js 我怎样才能把柴的东西和柴一样的东西结合起来呢?,node.js,chai,Node.js,Chai,我想写一个NodeJS-chai测试,它检查某个服务调用的结果(它是一个数组)是否包含一个与我期望的相等的对象。结果中可能还有一些我不想检查的字段 有两个chai插件可以解决这个问题:(它允许您使用类似expect(i).to.include.something.that.deep.equals)和(它允许您使用类似expect(i).to.be.like的语法) 但是,结合起来,它们不起作用 请参见以下示例: const chai = require('chai') const expect

我想写一个NodeJS-chai测试,它检查某个服务调用的结果(它是一个数组)是否包含一个与我期望的相等的对象。结果中可能还有一些我不想检查的字段

有两个chai插件可以解决这个问题:(它允许您使用类似
expect(i).to.include.something.that.deep.equals
)和(它允许您使用类似
expect(i).to.be.like的语法)

但是,结合起来,它们不起作用

请参见以下示例:

const chai = require('chai')
const expect = chai.expect
chai.use(require('chai-things'))
chai.use(require('chai-like'))

describe('the chai setup', function() {
  it('should work', function(done) {
    const i = [{
      name: 'Name A',
      age: 1
    }, {
      name: 'Name B',
      age: 2
    }]

    // Works
    expect(i).to.include.something.that.deep.equals({
      name: 'Name B',
      age: 2
    })

    // Works
    expect(i[1]).to.be.like({
      name: 'Name B'
    })

    // Doesn't work
    expect(i).to.include.something.that.like({
      name: 'Name B'
    })
    done()
  })
})
这不起作用,并抛出一条错误消息:

AssertionError:预期{name:'name B',年龄:2}喜欢{name: '名称B'}


如何解决这个问题?

使用外部插件并不总是以预期的结果结束。最有可能的是,一些命令会发生冲突,因为如果一起测试,它们没有经过彻底测试

另一种方法是简单地使用函数并循环数组。以下是在浏览器中使用Mocka和Chai的循环工作示例:

函数检查嵌套对象(obj){
expect(obj).is.an('对象')
//expect(obj).to.have.keys(['a','b','c']);//-引发错误
expect(obj).to.have.keys(['a','b']);
}
var initArray=[{“a”:1,“b”:1},{“a”:2,“b”:2}];
对于(var i=0;i

摩卡咖啡设置(“bdd”)
var expect=chai.expect;
mocha.run();

加载
chai-like
加载
chai-things
之前,先加载
chai-like
,使它们一起工作:

chai.use(require('chai-like'))
chai.use(require('chai-things'))