Как сделать утверждение 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' })
Другие вопросы по тегам