2016-06-14 4 views
2

当社のモカ・テスト・スイートは、このラインを持っていますNode.js "ライブラリのアサーションは"どうすればいいですか?

model.getResourceDependencies.should.be.a.Function; 

あなたは上記の式は代入でも呼び出しでもない、またはそれは見ることができるようにテストコードがshouldライブラリ

を使用していますか?

これはどのように機能しますか?いくつかの根底にあるメカニズムonPropertyRead()などがあるので、関数が明示的に呼び出されなくてもライブラリは何かを実行できるはずですか?

ところで、shouldまたはchai APIのいずれかを覚えるのは不可能です。

+0

ES5 [ゲッター(https://developer.mozilla.org/en/docs/Web/JavaScript /リファレンス/関数/ get)? – user3707125

+1

あなたのケースでは、最後のバージョンの.Function()はアサーション関数呼び出しになります。これは本質的にリンカを助け、.stringのようなゲッターの間違った名前を使用すると誤検出しないようにしますが、実際には.Stringとする必要があります。 –

+0

Related:[チャイ期待関数はどのように機能しますか?](https://stackoverflow.com/q/31605391/1048572) – Bergi

答えて

4

should.jsはES5ゲッターを使用してください。 https://github.com/shouldjs/should.js/blob/9.0.2/lib/should.js#L105

チャイもそれを使用します。 一般にhttps://github.com/chaijs/chai/blob/3.5.0/lib/chai/interface/should.js#L35

、そのような挙動は(昔とObject.prototype.__noSuchMethod__ES5 getter又はES6 Proxyで利用可能である

+0

キーの仕組みはJavaScriptの構造であると思われます。['Object.defineProperty()'](https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) –

関連する問題