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


235

다음은 왜 실패합니까?

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

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

답변:


360

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

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

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


2
FTR의 심도 동일 구문이 .deepEqual()( chaijs.com/api/assert )로 변경되었습니다 .
Ludder

7
그것은에서 당신이 찾고있는, 변경되지 않습니다 어설 기능을하지만 /해야 기대 하는 주제 스타터에 대해 우려했다.
moka

5
당신 말이 맞아요, 잘 읽지 못했습니다. API 변경이라고 생각했습니다.
Ludder

6
to.deep.equal(['a','b'])작동하지 않는 것 같습니다. 그러나 to.have.all.members(['a','b'])그렇지 않습니다. 너무 성가신 ...
야곱

chaijs.com/plugins/deep-equal-in-any-order 는 객체 속성의 순서를 예측할 수 없을 때 잘 작동했습니다.
asokan 2019


-1

이것은 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');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.