Как сделать утверждение DeepEqual с should.js?
Я пытался сделать глубокое утверждение с помощью should.js (последняя версия) и не имел никакого успеха. Я могу заставить вещи работать equal
но не с deepEqual
, На самом деле я вижу, что нет 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'
Справедливо. Сейчас заглядываю в should
Я вижу это добытчик:
> Object.getOwnPropertyDescriptor(Object.prototype, 'should')
{ get: [Function],
set: [Function],
enumerable: false,
configurable: true }
Так как это геттер, как я могу проверить его ключи? Это почти работает:
> Object.keys(Object.prototype.should)
[ 'obj' ]
Но потом вижу
> Object.getOwnPropertyDescriptor(should.obj)
{ value: undefined,
writable: false,
enumerable: false,
configurable: false }
Так что я застрял на этом этапе. Я просто хотел бы увидеть, что может последовать should
,
Я прочитал документы, и это говорит о том, что should.js
буквально расширяет модуль assert узла, но assert узла позволяет deepEqual
,
> assert = require('assert')
> assert.deepEqual
[Function: deepEqual]
Должные документы даже не упоминают deepEqual
на все, что действительно меня смущает. Чтобы сделать вещи еще более запутанными, я вижу deepEqual
когда я вхожу should
на узле REPL. Но он похоронен в ok
элемент, насколько я могу судить.
TL; DR: как мне позвонить assertEqual
или его эквивалент из should
?
1 ответ
Я думаю, что вы должны (каламбур) использовать eql
метод.
https://github.com/visionmedia/should.js/
({ foo: 'bar' }).should.eql({ foo: 'bar' })