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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...