2013-11-04 29 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; }

这些只是破解方法,虽然我不认为这是一个很好的解决方案,我没有找到为什么这个问题会发生。

相关问题