2013-11-04 89 views
2

我使用AngularJs構建了一個項目,並使用Karma和茉莉花進行了單元測試。 Angular項目中我的一個控制器需要引用socket.io來與服務器傳輸數據。我寫了這個控制器的單元測試用例。 Ana將'socket.io.js'文件添加到'karma.conf.js'中,當我測試它與業力,一個錯誤拋出: Uncaught TypeError: Cannot read property 'transport' of undefined,這個錯誤拋出在卡瑪茉莉花節點包adapter.js中的以下語句:「在karma-jasmine中無法讀取未定義的屬性'transport'單元測試

var getCurrentTransport = function() { 
    // probably running in debug.html (there's no socket.io) 
    if (!window.parent.io) { 
    return null; 
    } 

    var location = window.parent.location; 
    return window.parent.io.sockets[location.protocol + '//' + location.host].transport.name; 
}; 

我不會退出明白這是什麼意思的代碼,我發現window.parent.io.sockets是一個空的對象,所以又增加了語句返回空,因此它不會引發錯誤。

var location = window.parent.location; 
    if(!window.parent.io.sockets[location.protocol + '//' + location.host]){ 
    return null; 
    } 
    return window.parent.io.sockets[location.protocol + '//' + location.host].transport.name; 

我不確定這種改變是否正確?任何人都知道如何解決這個問題?

+0

我也遇到這個問題。你有沒有找到修復程序? – Zacho

+0

@Zacho檢查我的答案 –

回答

0

@Zacho在return...之前在您的adapter.js中添加以下語句。

if(!window.parent.io.sockets[location.protocol + '//' + location.host]){ return null; }

這些只是破解方法,雖然我不認爲這是一個很好的解決方案,我沒有找到爲什麼這個問題會發生。

相關問題