如何与应该.js做深度平等断言



我试图用应该.js(最新版本(做一个deepEqual断言,但没有任何成功。 我可以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,我看到它是一个getter:

> 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从字面上扩展了节点的断言模块,但节点的断言确实允许deepEqual

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

应该的文档甚至根本没有提到deepEqual,这真的让我感到困惑。 更令人困惑的是,当我在节点 REPL 上输入 should 时,我确实看到了一个deepEqual。 但据我所知,它被埋藏在一个ok元素中。

TL;DR:我如何从should中调用assertEqual或其等效项?

我认为你应该(双关语(使用eql方法。

https://github.com/visionmedia/should.js/#eql

({ foo: 'bar' }).should.eql({ foo: 'bar' })

相关内容

  • 没有找到相关文章

最新更新