javascript – 如何做一个深层次的断言与should.js?

前端之家收集整理的这篇文章主要介绍了javascript – 如何做一个深层次的断言与should.js?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图用should.js(最新版本)做出深刻的断言,并没有取得任何成功.我可以让事情平等而不是深度工作.其实我看到没有深度的方法.

这是我试过的:

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

很公平.现在看,应该,我看到这是一个吸气者:

> 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,configurable: false }

所以我现在比较坚持.我只想看看应该怎么做的事情.

我做了read the docs,它表示should.js字面上扩展了节点的assert模块,但节点的assert确实允许deepEqual.

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

应该没有提到deepEqual,这真的让我困惑.为了使事情变得更加混乱,当我在节点REPL上输入时,我会看到一个deepEqual.但是,据我所知,它被埋在一个ok元素中.

TL; DR:如何从应用中调用assertEqual或其等价物?

解决方法

我想你应该(双关语)使用eql方法.

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

({ foo: 'bar' }).should.eql({ foo: 'bar' })
原文链接:https://www.f2er.com/js/151539.html

猜你在找的JavaScript相关文章