2013-10-07 4 views
9

should.js (최신 버전)로 deepEqual 어서션을 만들려고했지만 아무런 성공도 얻지 못했습니다. 나는 equal으로 일할 수 있지만, deepEqual으로는 할 수 없습니다. 실제로 나는 deepEqual 방법이 없다는 것을보고 있습니다.should.js로 deepEqual 어서션을 수행하는 방법은 무엇입니까?

는 여기에 내가 무엇을 시도했다입니다 : 제법

> require('should') 
{...} 
> > var x = Number(8) 
undefined 
> x.should.equal(8) 
{ obj: 8 } 
> x.should.equal(9) 
AssertionError: expected 8 to equal 9 
at .... 
> x.should.deepEqual(8) 
TypeError: Object #<Object> has no method 'deepEqual' 

. 그것은 게터이기 때문에

> Object.getOwnPropertyDescriptor(Object.prototype, 'should') 
{ get: [Function], 
    set: [Function], 
    enumerable: false, 
    configurable: true } 

, 어떻게 그 키를 조사하기 : 이제 should에보고, 나는 그것이 게터?을 참조하십시오

> Object.keys(Object.prototype.should) 
[ 'obj' ] 

을하지만 그때 나는

> Object.getOwnPropertyDescriptor(should.obj) 
{ value: undefined, 
    writable: false, 
    enumerable: false, 
    configurable: false } 

그래서 나는 오히려이 시점에서 붙어있어 볼이 거의 작동합니다. 나는 단지 어떤 것들이 따라 올 수 있는지보고 싶습니다. should.

I read the docs을했고 그것은 should.js 그대로 노드의 어설 션 모듈을 확장하지만, 노드의 어설 deepEqual을 허용 않는 것을 말한다.

> assert = require('assert') 
> assert.deepEqual 
[Function: deepEqual] 

는 문서도 정말 혼란이있는, 모든 deepEqual을 언급하지 않는 것이다. 더 복잡한 것을 만들기 위해 을 수행하십시오. 노드 REPL에 should을 입력하면 deepEqual을 참조하십시오. 하지만 그것은 내가 말할 수있는 한 ok 요소에 묻혀 있습니다.

TL : DR : assertEqual 또는 그 등가물을 should (으)로 전화하려면 어떻게해야합니까?

답변