programing

체이 테스트 배열 동일성이 예상대로 작동하지 않습니다.

muds 2023. 5. 21. 12:02
반응형

체이 테스트 배열 동일성이 예상대로 작동하지 않습니다.

다음이 실패하는 이유는 무엇입니까?

expect([0,0]).to.equal([0,0]);

그리고 그것을 테스트하는 올바른 방법은 무엇입니까?

역시..equal에서는 데이터가 아닌 개체를 비교하며, 사용자의 경우에는 두 개의 서로 다른 배열입니다.

사용하다.eql값을 깊이 비교하기 위해. 링크를 확인하십시오.
아니면 당신은 사용할 수 있습니다..deep.equal와 같은 시뮬레이션을 하기 위해.eql.
아니면 당신의 경우에는 확인하고 싶을 수도 있습니다. .members.

사용할 수 있는 asserts.deepEqual링크를 걸다

딥 이퀄을 사용해 보십시오.중첩된 배열과 중첩된 Json을 비교합니다.

expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });

주요 설명서 사이트를 참조하십시오.

순서가 지정되지 않은 심층 등식의 경우, 멤버 사용

expect([1,2,3]).to.have.members([3,2,1]); // passes expect([1,2,3]).to.have.members([1,2,3]); // passes expect([1,2,3]).to.eql([3,2,1]); // fails

원천

import chai from 'chai';
const arr1 = [2, 1];
const arr2 = [2, 1];
chai.expect(arr1).to.eql(arr2); // Will pass. `eql` is data compare instead of object compare.

사용할 수 있습니다..deepEqual()

const { assert } = require('chai');

assert.deepEqual([0,0], [0,0]);

사용할 수 있습니다.

https://www.chaijs.com/api/assert/ #dep_same dep members

assert.sameDeepMembers(set1, set2, [message])

라고 단언합니다.set1그리고.set2모든 순서에서 동일한 구성원을 가집니다.완전 동일성 검사를 사용합니다.

assert.sameDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [{ b: 2 }, { a: 1 }, { c: 3 }], 'same deep members');

이것이 chai를 사용하여 연관 배열을 심층적으로 테스트하는 방법입니다.

는 두 개의 연관 배열이 같다고 주장하는 데 문제가 있었습니다.나는 이것들이 자바스크립트에서 실제로 사용되어서는 안 된다는 것을 알지만 나는 연관 배열에 대한 참조를 반환하는 레거시 코드를 중심으로 단위 테스트를 작성하고 있었습니다. :-)

함수 호출 전에 변수를 개체(어레이가 아님)로 정의하여 이 작업을 수행했습니다.

var myAssocArray = {};   // not []
var expectedAssocArray = {};  // not []

expectedAssocArray['myKey'] = 'something';
expectedAssocArray['differentKey'] = 'something else';

// legacy function which returns associate array reference
myFunction(myAssocArray);

assert.deepEqual(myAssocArray, expectedAssocArray,'compare two associative arrays');

언급URL : https://stackoverflow.com/questions/17526805/chai-test-array-equality-doesnt-work-as-expected

반응형