10

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されていないため、本当に混乱しています。さらにややこしいことに、ノード REPLdeepEqualに入ると が表示されます。しかし、私が知る限り、shouldそれは要素に埋もれています。ok

assertEqualTL;DR:から、またはそれに相当するものを呼び出すにはどうすればよいshouldですか?

4

1 に答える 1