使用 Chai 的 Expect 接口测试部分对象属性
Test partial object properties with Chai's Expect interface
我有一个对象有很多属性,想检查其中的一些。但是其中一个字段是随机字符串,因此无法检查是否完全匹配。
const expectedObject = {
a: 'A',
b: 123,
c: ['x', 'y', 'z'],
random: 'dsfgshdfsg'
}
由于随机字段,使用 eql
检查无效。
expect(result).to.eql(expectedObject)
有没有类似的方法可以提供一个对象,其中只有我想测试的字段?
替代方法是删除测试的随机字段,但这有点麻烦。
const resultWithKnownFields = {...result}
delete resultWithKnownFields.random
const expectedObject = {
a: 'A',
b: 123,
c: ['x', 'y', 'z']
}
expect(resultWithKnownFields).to.eql(expectedObject)
expect(result.random.length).to.equal(10)
.containSubset()
chai-subset 插件的方法。
可以对对象中的字段进行部分匹配。
const { expect } = require('chai');
const chai = require('chai');
const chaiSubset = require('chai-subset');
chai.use(chaiSubset);
describe('69555042', () => {
it('should pass', () => {
const expectedObject = {
a: 'A',
b: 123,
c: ['x', 'y', 'z'],
};
const result = {
a: 'A',
b: 123,
c: ['x', 'y', 'z'],
random: 'dsfgshdfsg',
};
expect(result).to.containSubset(expectedObject);
expect(typeof result.random).to.equal('string');
});
});
我有一个对象有很多属性,想检查其中的一些。但是其中一个字段是随机字符串,因此无法检查是否完全匹配。
const expectedObject = {
a: 'A',
b: 123,
c: ['x', 'y', 'z'],
random: 'dsfgshdfsg'
}
由于随机字段,使用 eql
检查无效。
expect(result).to.eql(expectedObject)
有没有类似的方法可以提供一个对象,其中只有我想测试的字段?
替代方法是删除测试的随机字段,但这有点麻烦。
const resultWithKnownFields = {...result}
delete resultWithKnownFields.random
const expectedObject = {
a: 'A',
b: 123,
c: ['x', 'y', 'z']
}
expect(resultWithKnownFields).to.eql(expectedObject)
expect(result.random.length).to.equal(10)
.containSubset()
chai-subset 插件的方法。
可以对对象中的字段进行部分匹配。
const { expect } = require('chai');
const chai = require('chai');
const chaiSubset = require('chai-subset');
chai.use(chaiSubset);
describe('69555042', () => {
it('should pass', () => {
const expectedObject = {
a: 'A',
b: 123,
c: ['x', 'y', 'z'],
};
const result = {
a: 'A',
b: 123,
c: ['x', 'y', 'z'],
random: 'dsfgshdfsg',
};
expect(result).to.containSubset(expectedObject);
expect(typeof result.random).to.equal('string');
});
});