我正在尝试调试我使用 WebStorm 2016.1.2 编写的一些 Jasmine 测试。
我的测试代码是这样的:
var should = require("should");
var myLib = require("../my-lib");
describe("Scenario", () => {
it("works as expected", () => {
myLib.do().should.not.throw()
});
});
我的目录结构是这样的:
│
├───node_modules
│ ├───.bin
│ ├───aws-sdk
│ │ └───<snip>
│ ├───jasmine
│ │ └───<snip>
│ ├───jasmine-core
│ │ └───<snip>
│ ├───karma
│ │ └───<snip>
│ ├───karma-jasmine
│ │ └───<snip>
│ ├───should
│ │ └───<snip>
│ └───sinon
│ └───<snip>
├───spec
│ ├───support
│ │ └───jasmine.json
│ └───my-lib.spec.js
└───my-lib.js
我在 WebStorm 中的 NodeJS 设置如下所示:
要调试,我只需按 F5 并选择要运行的 my-lib.spec.js
文件。然后我得到以下堆栈跟踪:
"C:\Program Files (x86)\JetBrains\WebStorm 2016.1.2\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=22714 my-lib.spec.js
Debugger listening on port 22714
c:\Users\<me>\WebstormProjects\my-lib\spec\my-lib.spec.js:4
describe("Scenario", () => {
^
ReferenceError: describe is not defined
at Object.<anonymous> (c:\Users\<me>\WebstormProjects\my-lib\spec\<my-lib>.js:4:1)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.runMain [as _onTimeout] (module.js:442:10)
at Timer.listOnTimeout (timers.js:92:15)
Process finished with exit code 1
如果有人知道如何让 WebStorm 识别 Jasmine 是全局安装的,那就太好了。
编辑:我按照 lena 的建议设置了 Karma 运行配置,配置如下:
当我按 F5 键运行它时,Chrome 浏览器弹出并且是空白的(我安装了适用于 Chrome 的 JetBrains 插件)
最佳答案
您正在使用 Node.js 运行配置来运行您的测试 - 而 Node 对您的测试框架一无所知。您应该使用测试运行器(例如,业力-因为您安装了业力)。尝试使用业力运行配置。参见 https://confluence.jetbrains.com/display/WI/Running+JavaScript+tests+with+Karma .
顺便说一句,如果你喜欢将 Should 与 karma 一起使用,请尝试 karma-should
关于javascript - NodeJS、WebStorm 和 Jasmine : ReferenceError: describe is not defined when debugging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37487342/