我尝试使用 should.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
,我看到它是一个吸气剂:
> 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时,我确实看到了一个。但据我所知,它隐藏在一个元素中。deepEqual
should
ok
TL; DR:我如何调用assertEqual
或与其等效的should
?