バックボーンアプリケーションのテストで sinon.js を使用しようとしています。しかし、残念ながら、エラーのためにスパイメソッドを使用できません。
TypeError: 'undefined' is not a function (evaluating 'sinon.spy()')
エラーを再現する手順は次のとおりです。
cd test && bower install sinon
<script src="bower_components/sinon/lib/sinon.js"></script>
Test/spec/test.jsでスパイを作成します:
describe('Give it some context', function () {
describe('maybe a bit more context here', function () {
it('should run here few assertions', function () {
var spy = sinon.spy();
spy.should.be.ok;
});
});
});
うなり声でテストを実行します:grunt test
記述されたエラーでテストは失敗します。
誰かが何が悪いのかを見つけるのを手伝ってもらえますか?
スパイ、スタブなどの機能は、lib/sinon
フォルダーからスクリプトを含めることによって手動で追加する必要があることが判明しました。この事実は、インストールのセクションで説明されています。また、Node.js環境でのみコアsinon.jsファイルのコードがあるため、自動的に実行されます。
sinon
が<script>
またはrequire.js
(AMDモジュールとして)としてロードされた場合にロードするのを都合よく忘れるファイルのリストをここに残しておきます-基本的にはnode.js
:
"sinon/lib/sinon.js",
"sinon/lib/sinon/spy.js",
"sinon/lib/sinon/call.js",
"sinon/lib/sinon/behavior.js",
"sinon/lib/sinon/stub.js",
"sinon/lib/sinon/mock.js",
"sinon/lib/sinon/collection.js",
"sinon/lib/sinon/assert.js",
"sinon/lib/sinon/sandbox.js",
"sinon/lib/sinon/test.js",
"sinon/lib/sinon/test_case.js",
"sinon/lib/sinon/match.js"
それらのいずれかをスキップしてかまいませんが、sinonが不思議な方法で失敗することを期待してください。
Sinon1.17.2とChrome 47.0で同じ問題が発生しました。上記の解決策とそれらのバリエーションを試した後、核オプションを使用して Jasmine に切り替えました。 =。
私のテストスイートでは、チャイの「期待」をジャスミンのものに変換するのに、グローバルな検索と置換を約15分しかかからず、構文の前にモカに関するいくつかの違いがありました。ジャスミンは予期しない構文に明確にフラグを立てました。 ジャスミンスパイオブジェクト はシノンの素晴らしい代替品でした。
他の回答とは異なり、個々のソースファイルを含めて手動でsimonをインストールしませんでした。代わりに、 Bowerを使用してブラウザにSinon.JSをインストールする方法 のアドバイスに従いました。
bower install http://sinonjs.org/releases/sinon-1.17.6.js
その後
bower list -p
'sinon-1.17.6': 'bower_components/sinon-1.17.6/index.js'
そして
<script src="bower_components/sinon-1.17.6/index.js"></script>
私のために働いた。