2013-02-05 7 views
8

저는 Jasmine 라이브러리를 배우는 중입니다. Jasmine에는 매우 제한된 수의 기본 제공 어설트가 있습니다. 나는 또한 제한된 수의 숫자를 가지고 있음에도 불구하고, 이중의 어설 션 중 두 가지가 중복되는 것으로 나타났습니다 : toBeDefined/toBeUndefined. 즉 재스민 (Jasmine) : 왜 정의되지 않았으며 정의되지 않았습니까?

, 이들 모두는 똑같은 일을 확인하는 것 같다 :

expect(1).toBeDefined(); 
expect(undefined).not.toBeUndefined(); 

이 몇 가지 이유가 toBeDefinedtoBeUndefined과 동일하지 않은 경우처럼,이 있습니까? 아니면 재스민에서 두 개의 완벽하게 동등한 방법이있는 단 한가지 주장입니까? (마지막 두 toEqual입니다에서 내가 누락 어설 생각하지만)

+3

"to bee ... or not.toBe ..."- 그 질문입니다. 나는 일주일 내내 여기에있다. – demoncodemonkey

답변

6

하나는 toBeTruthytoBeFalsy, 또는 toBeLessThantoBeGreaterThan에 대해 동일한 가정 수 있습니다. 결국 그것은 가독성과 사용자 선호도로 이어집니다.

보다 완벽한 답변을 제공하기 위해 이러한 함수에 대해 호출 된 코드를 살펴 보는 것이 유용 할 수 있습니다. 실행되는 코드는 별도의 경로를 거칩니다 (toBeUndefined은 단순히 !toBeDefined이 아닙니다). 의미있는 유일한 답변은 가독성 (또는 귀찮은 기능 요청에 포기)입니다. https://github.com/pivotal/jasmine/blob/master/src/core/Matchers.js#L135

관련 문제