[node.js] 차이 테스트 배열 평등이 예상대로 작동하지 않습니다

다음은 왜 실패합니까?

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

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



답변

대한 기대 , .equal오히려 자신의 데이터보다 개체를 비교하고, 귀하의 경우에 두 개의 서로 다른 배열입니다 것입니다.

.eql값을 깊이 비교하기 위해 사용하십시오 . 이 링크를 확인하십시오 . 또는와 동일한 시뮬레이션을 위해
사용할 수 있습니다 .
또는 귀하의 경우 확인 하고 싶을 수도 있습니다 ..deep.equal.eql
.members

들어는 주장 사용할 수있는 .deepEqual, 링크를 .


답변

깊은 같음을 사용하십시오. 중첩 배열과 중첩 Json을 비교합니다.

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

기본 설명서 사이트를 참조하십시오 .


답변

이것은 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');


답변