首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用deepEqual进行should.js断言?

如何使用deepEqual进行should.js断言?
EN

Stack Overflow用户
提问于 2013-10-07 21:47:00
回答 1查看 4.5K关注 0票数 10

我尝试用deepEqual (最新版本)来断言should.js,但没有取得任何成功。我可以使用equal,但不能使用deepEqual。事实上,我看到没有deepEqual方法。

以下是我尝试过的:

代码语言:javascript
复制
> 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:

代码语言:javascript
复制
> Object.getOwnPropertyDescriptor(Object.prototype, 'should')
{ get: [Function],
  set: [Function],
  enumerable: false,
  configurable: true }

既然它是个好东西,我怎么检查它的钥匙呢?这几乎是可行的:

代码语言:javascript
复制
> Object.keys(Object.prototype.should)
[ 'obj' ]

但后来我看到了

代码语言:javascript
复制
> Object.getOwnPropertyDescriptor(should.obj)
{ value: undefined,
  writable: false,
  enumerable: false,
  configurable: false }

所以我被困在这点上了。我只想看看should之后会发生什么事情。

我做了read the docs,它说should.js确实扩展了节点的断言模块,但是节点的断言确实允许deepEqual

代码语言:javascript
复制
> assert = require('assert')
> assert.deepEqual
[Function: deepEqual]

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

TL;DR:我如何称呼assertEqual或与should等价的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-07 22:13:01

我认为您应该(双关意)使用eql方法。

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

代码语言:javascript
复制
({ foo: 'bar' }).should.eql({ foo: 'bar' })
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19235374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档