簡體   English   中英

TypeError:'undefined'不是函數(評估'sinon.spy()')

[英]TypeError: 'undefined' is not a function (evaluating 'sinon.spy()')

我正在嘗試使用sinon.js來測試骨干應用程序。 但不幸的是我因為錯誤而無法使用間諜方法:

TypeError: 'undefined' is not a function (evaluating 'sinon.spy()')

以下是重現錯誤的步驟:

  1. 使用主干yeoman生成器創建一個空項目
  2. 安裝sinon: cd test && bower install sinon
  3. 包含在test / index.html中<script src="bower_components/sinon/lib/sinon.js"></script>
  4. 在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; }); }); }); 
  5. 用grunt: grunt test運行grunt test

  6. 測試將失敗並顯示錯誤。

誰能幫忙找出問題所在?

我將只留下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以奇怪的方式失敗。

事實證明,應該通過包含lib/sinon文件夾中的腳本手動添加間諜,存根等功能。 安裝部分提到了這一事實。 並且由於僅在Node.js環境中的核心sinon.js文件的代碼,它是自動完成的。

我遇到了與sinon 1.17.2和Chrome 47.0相同的問題。 在嘗試了上述解決方案和變體后,我最終使用核選項並切換到Jasmine

對於我的測試套件,只需要大約15分鍾的一些全局查找和替換就可以將我的chai'期望'轉換為Jasmine,並在語法之前圍繞mocha進行一些差異; Jasmine清楚地標記了意外的語法。 茉莉花間諜物品是罪人的好替代品。

與其他答案不同,我沒有通過包含每個單獨的源文件手動安裝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>

為我工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM