我正在尝试调试我使用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很棒 .
EDIT: 我按照lena的建议设置了一个Karma运行配置,配置如下:
当我点击F5运行时,会弹出一个Chrome浏览器并且是空白的(我已经安装了适用于Chrome的JetBrains插件)
3 回答
您正在使用Node.js运行配置来运行测试 - 而Node对您的测试框架一无所知 . 你应该使用一个测试跑步者(例如,业力因为你已经安装了业力) . 尝试使用karma运行配置 . 见https://confluence.jetbrains.com/display/WI/Running+JavaScript+tests+with+Karma .
顺便说一句,如果你喜欢和业力一起使用,请试试karma-should
尝试使用
jasmine-node
模块 .这取决于按F5时发送到js文件的命令 . 它必须是
jasmine-node <test files>
而不是node <test files>
.尝试在控制台/终端中执行此操作,看看它是否有效 . 可能是网络风暴发送了错误的命令 .
如果您还没有安装jasmine节点,您可以这样做
npm install jasmine-node -g
在您的主文件夹中,有一个'package.json'文件 . 打开它,你会看到这样的东西:
然后在“start”之后添加以下内容:“node . ”,=>“test”:“jasmine” . 它应该如下所示:
然后在终端中运行'npm test'