首页 文章

NodeJS,WebStorm和Jasmine:ReferenceError:调试时未定义describe

提问于
浏览
2

我正在尝试调试我使用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设置如下所示:

WebStorm Javascript Library Settings

要调试我只是按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运行配置,配置如下:
Karma configuration

当我点击F5运行时,会弹出一个Chrome浏览器并且是空白的(我已经安装了适用于Chrome的JetBrains插件)

3 回答

  • 1

    您正在使用Node.js运行配置来运行测试 - 而Node对您的测试框架一无所知 . 你应该使用一个测试跑步者(例如,业力因为你已经安装了业力) . 尝试使用karma运行配置 . 见https://confluence.jetbrains.com/display/WI/Running+JavaScript+tests+with+Karma .

    顺便说一句,如果你喜欢和业力一起使用,请试试karma-should

  • 2

    尝试使用 jasmine-node 模块 .

    这取决于按F5时发送到js文件的命令 . 它必须是 jasmine-node <test files> 而不是 node <test files> .

    尝试在控制台/终端中执行此操作,看看它是否有效 . 可能是网络风暴发送了错误的命令 .

    如果您还没有安装jasmine节点,您可以这样做

    npm install jasmine-node -g

  • -1

    在您的主文件夹中,有一个'package.json'文件 . 打开它,你会看到这样的东西:

    {
      "name": "prep",
      "version": "1.0.0",
      "main": "server/server.js", //This can be different
      "scripts": {
        "lint": "eslint .",
        "start": "node .",
        "posttest": "npm run lint && nsp check"
      }, ....
    

    然后在“start”之后添加以下内容:“node . ”,=>“test”:“jasmine” . 它应该如下所示:

    {
      "name": "prep",
      "version": "1.0.0",
      "main": "server/server.js",
      "scripts": {
        "lint": "eslint .",
        "start": "node .",
        "test": "jasmine",
        "posttest": "npm run lint && nsp check"
      },....
    

    然后在终端中运行'npm test'

相关问题