Tengo un objeto con muchas propiedades y quiero comprobar algunas de ellas. Pero uno de los campos es una cadena aleatoria, por lo que no se puede verificar si hay una coincidencia exacta.
const expectedObject = { a: 'A', b: 123, c: ['x', 'y', 'z'], random: 'dsfgshdfsg' } La verificación con eql no funciona debido al campo aleatorio.
expect(result).to.eql(expectedObject)¿Existe un método similar en el que pueda proporcionar un objeto solo con los campos que quiero probar?
La alternativa es eliminar el campo aleatorio para la prueba, pero esto es un poco engorroso.
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() del complemento chai-subset . La coincidencia parcial se puede realizar en los campos del objeto.
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'); }); });