I am using WebStorm combined with karma to run Jasmine javaScript unit tests. If I have nested describe
statements then karma is crashing, or maybe it's WebStorm crashing, I'm not sure.
The karma error output says:
ERROR [karma]: [TypeError: Cannot read property 'should return a Foo' of undefined]
describe
statements then everything runs fine.Versions:
What is causing it to crash?
Code and test:
var Foo = function Foo(name) {
this.name = name;
};
Foo.prototype.bar = function bar() {
return "Hello " + this.name;
};
describe("Foo", function () {
describe("constructor", function () {
it("should return a Foo", function () {
var act,
target;
act = function () {
target = new Foo("Gary");
};
expect(act).not.toThrow();
expect(target).not.toBeNull();
});
});
describe("bar", function () {
it("should return a string like 'Hello' + name", function () {
var target, actValue;
target = new Foo("Gary");
actValue = target.bar();
expect(actValue).toBe("Hello Gary");
});
});
});
Karma error output:
/usr/local/bin/node /Applications/WebStorm.app/plugins/js-karma/js_reporter/karma-intellij/lib/intellijServer.js --karmaPackageDir=/usr/local/lib/node_modules/karma --configFile=/Users/Gary/Documents/DotBox/test/karma.conf.js --coverageTempDir=/private/var/folders/5m/hfxftkwx5fsdnxf3g3nn5_2m0000gn/T/karma-intellij-coverage-4959093687844631591.tmp
INFO [karma]: Karma v0.10.8 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 31.0.1650 (Mac OS X 10.9.0)]: Connected on socket vWDSeE6uTpA6RpuH05Bq
INFO [watcher]: Changed file "/Users/Gary/Documents/DotBox/test/fooSpec.js".
ERROR [karma]: [TypeError: Cannot read property 'should return a Foo' of undefined]
TypeError: Cannot read property 'should return a Foo' of undefined
at createSpecNode (/Applications/WebStorm.app/plugins/js-karma/js_reporter/karma-intellij/lib/intellijReporter.js:51:37)
at IntellijReporter.onSpecComplete (/Applications/WebStorm.app/plugins/js-karma/js_reporter/karma-intellij/lib/intellijReporter.js:190:20)
at EventEmitter.emit (events.js:98:17)
at onResult (/usr/local/lib/node_modules/karma/lib/browser.js:177:13)
at Socket.EventEmitter.emit [as $emit] (events.js:117:20)
at SocketNamespace.handlePacket (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/namespace.js:335:22)
at Manager.onClientMessage (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/manager.js:488:38)
at WebSocket.Transport.onMessage (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transport.js:387:20)
at Parser.<anonymous> (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:39:10)
at Parser.EventEmitter.emit (events.js:95:17)
at finish (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:288:16)
at Parser.expectHandler (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:299:15)
at Parser.add (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:466:24)
at Parser.expect (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:499:10)
at Parser.<anonymous> (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:298:18)
at Parser.add (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:466:24)
at Parser.expect (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:499:10)
at expectData (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:296:16)
at Parser.<anonymous> (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:317:11)
at Parser.add (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:466:24)
at Parser.expect (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:499:10)
at Parser.opcodeHandlers.1 (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:316:14)
at Parser.processPacket (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:533:8)
at Parser.add (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:466:24)
at Socket.<anonymous> (/usr/local/lib/node_modules/karma/node_modules/socket.io/lib/transports/websocket/hybi-16.js:141:17)
at Socket.EventEmitter.emit (events.js:117:20)
at Socket.<anonymous> (_stream_readable.js:746:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:408:10)
at emitReadable (_stream_readable.js:404:5)
at readableAddChunk (_stream_readable.js:165:9)
at Socket.Readable.push (_stream_readable.js:127:10)
at TCP.onread (net.js:526:21)
Process finished with exit code 1
SpecRunner Output
Looks like it is an issue in the 7.0.2 version of WebStorm, specifically the old Karma plugin.
The fix is to download the new karma plugin version 131.560
. Or when the next version 7.0.3
of WebStorm comes out it may have the new plugin.
See some documentation here:
http://youtrack.jetbrains.com/issue/WEB-10010
and
https://github.com/karma-runner/karma-intellij/commit/589062a9500d889a8d328ff91cc185e6ec1fd127