2016-02-16 61 views
7

我有一大堆工作單元測試各種角度(1.4.7)的指令,而我使用的是因果報應,茉莉花和興農用於測試的角度指令。

我想添加一個單元測試了新的指令,這是唯一的指令,我現在有一個使用$window但我看到控制檯輸出一個神祕的錯誤:

TypeError: 'undefined' is not an object (evaluating 'this.proxy.toString')

這誤差從sinon.js在陸續上馬2372

我做的指令單元測試所有的「正常」的事情,如創建具有指令作爲屬性假的元素:

testElement = document.createElement('div'); 
testElement.setAttribute('data-my-directive'); 
document.body.appendChild(testElement); 

和編譯指令:

$compile(testElement)($scope); 

我使用$provide嘗試模仿的對象$window

module('app', function ($provide) { 
    $provide.value('$window', { id: 'test' }); 
}); 

但只要我嘗試在文件中使用$window正在測試中,錯誤如上所示被拋出。

正如我說的,我有一堆的其他單元測試其他指令,服務和控制器如預期工作,所以一切似乎正確地安裝。這只是這個特殊的測試。

任何想法?

回答

2

我不知道這是否是同樣的錯誤,但只是前兩天的修復,以類似的問題已得到有效解決對興農github上:

https://github.com/sinonjs/sinon/pull/833

修復包含線路:

var callStr = this.proxy ? this.proxy.toString() + "(" : ""; 

其中空校驗是一回事,而其他幾行。

此修復程序是在提交7a18eb5文件lib/sinon/call.js

我不知道這是否是一樣的,因爲文件是不同的,所以是線,太。不過,這很有趣,我會嘗試最新的sinon版本,看看這是否得到解決。但是,如果編碼器在兩個文件中都是相同的,那麼類似的錯誤可能出現在Sinon的幾個部分。

+0

完美的,我會盡量在週一的新版本。 – danwellman

+0

抱歉,延遲。我在這方面做了一些更多的工作,它*不是Sinon的版本,雖然這是一個很好的電話。我認爲問題在於,在被測文件中使用'$ window'的代碼也在'$ document.ready()'處理程序中,之前我沒有正確存根。我將這個標記爲公認的答案,因爲它是唯一的答案,也因爲它讓我思考了被測代碼的所有方面,而不僅僅是使用'$ window'的部分,這是非常寶貴的。謝謝! – danwellman