2016-06-14 10 views
2

우리의 모카 테스트 스위트는이 라인을 가지고?Node.js "해야"라이브러리 어설 션, 어떻게 작동합니까?</p> <pre><code>model.getResourceDependencies.should.be.a.Function; </code></pre> <p>위의 식을 할당하거나 호출도 아닌 볼 수있는 테스트 코드가 <code>should</code> 라이브러리</p> <p>을 사용하거나이 :

어떻게 작동합니까? 함수가 명시 적으로 호출되지 않아도 라이브러리가 무언가를 실행할 수 있도록 기본 메커니즘 인 onPropertyRead() 또는 이와 비슷한 것이 있습니까?

그런데 should 또는 chai API를 기억하는 것은 거의 불가능합니다.

+0

ES5 [게터 (https://developer.mozilla.org/en/docs/Web/JavaScript 함께 사용할/참조/함수/get)? – user3707125

+1

FYI should.js는 getter와 assertion 호출을 별도로 처리한다. 마지막 버전의 .Function()은 어서션 함수 호출이 될 것이다. 근본적으로 linters에 도움이되고, .string과 같은 getter의 잘못된 이름을 사용할 때 위양성을 가지지 않지만 실제로는 .String과 같아야합니다. –

+0

관련 항목 : [chai expect 함수는 어떻게 작동합니까?] (https://stackoverflow.com/q/31605391/1048572) – Bergi

답변

4

should.js는 ES5 게터을 사용합니다. https://github.com/shouldjs/should.js/blob/9.0.2/lib/should.js#L105

chai도 사용합니다. 일반적으로, 이러한 동작 https://github.com/chaijs/chai/blob/3.5.0/lib/chai/interface/should.js#L35

은 (옛날 및 Object.prototype.__noSuchMethod__ ) ES5 getter 또는 ES6 Proxy

+0

주요 메커니즘은 JavaScript 구문 인 것으로 보이며 ['Object.defineProperty()'] (https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) –