2013-10-07 3 views
9

Ich habe versucht, eine deepEqual Behauptung mit sollte.js (die neueste Version) und hatte keinen Erfolg. Ich kann Dinge mit equal arbeiten, aber nicht mit deepEqual. Tatsächlich sehe ich, dass es keine deepEqual Methode gibt.Wie macht man eine deepEqual Behauptung mit sollte.js?

Hier ist, was ich versucht habe:

> 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' 

Fair enough. Jetzt in should suchen, ich sehe, es ist ein Getter:

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

Da es ein Getter ist, wie ich untersuchen ihre Schlüssel? Diese fast funktioniert:

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

Aber dann sehe ich

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

Also lieber an dieser Stelle stecken ich. Ich möchte nur sehen, was die Dinge können should folgen.

ich tatread the docs und es sagt, dass should.js buchstäblich Knotens Assertion-Modul erweitert, aber Knotens assert deepEqual zulässt.

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

Das sollte docs auch nicht deepEqual erwähnt überhaupt, was wirklich hat mich verwirrt. Um die Dinge noch verwirrender zu machen, ich tun siehe deepEqual, wenn ich should auf dem Knoten REPL eingeben. Aber es ist in einem ok Element vergraben, soweit ich das beurteilen kann.

TL; DR: Wie rufe ich assertEqual oder sein Äquivalent von should?

Antwort