2013-09-03 3 views
3

나는대로 모카 어딘가에 주장하고있다 :왜 mongoose.Schema.objectId?에서 모카 어설 션이 실패합니까?

assert.equal(model.organizationId,objId); 

하지만 난으로 실패한 모카 결과를 얻고있다 : 아이디 년대는 동일 그런 일이 왜

Uncaught AssertionError: "5225777180a843d901000012" == "5225777180a843d901000012" 

.

어떻게 극복 할 수 있습니까?

+0

ShouldJS를 사용한다면'==='에'var1.should.equal (var2)'를 사용하고'=='에는'var1.should.eql (var2)'를 사용할 수 있습니다. – DanH

답변

9

이렇게 mongodb ObjectIds는 슬프게도 이런 점에서 실망 스럽습니다. 그것들은 구별되는 객체이므로 obj1 === obj2이 나타내는 값이 동일하더라도 false로 평가됩니다. 다음 세 가지 옵션이 있습니다.

  1. 비교하기 전에 문자열로 변환하십시오. 그렇지 않으면 너무 좌절하기 때문에 많이 사용합니다. (나는이 일을했습니다)

assert.ok(model.organizationId.equals(objId))

  • 가하며 Object, 또는 문자열을 널 받아 옳은 일을 할 수있는 사용자 정의 비교 함수를 작성 :

  • 은 그들이 제공하는 .equals() 방법을 사용

  • 관련 문제