AngularJs でプロジェクトをビルドし、Karma と jasmine で単体テストを行いました。Angular プロジェクトのコントローラーの 1 つは、サーバーでデータを転送するために socket.io を参照する必要があります。そして、このコントローラーの単体テストケースを書きました。アナは「socket.io.js」ファイルを「karma.conf.js」に追加します。カルマでテストすると、エラーがスローされます:
Uncaught TypeError: Cannot read property 'transport' of undefined
、このエラーは、karma-jasmine ノード パッケージの adapter.js のステートメントの下にスローされます。
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
が空のオブジェクトであることがわかったので、エラーをスローしないように null を返す別のステートメントを追加しました。
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;
この変更が正しいかどうかわかりません。誰でもこの問題を解決する方法を知っていますか?