javascript - NodeJS、WebStorm 和 Jasmine : ReferenceError: describe is not defined when debugging

标签 javascript node.js jasmine webstorm

我正在尝试调试我使用 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 是全局安装的,那就太好了。

编辑:我按照 lena 的建议设置了 Karma 运行配置,配置如下: Karma configuration

当我按 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/

相关文章:

javascript - 从 jsVanilla 创建动态选择框

javascript - 使用 JavaScript 进行表单验证?

javascript - 如何在特定索引中嵌入 Instagram 轮播?

javascript - 将对象属性绑定(bind)到另一个对象的属性

mysql - 如果远程 MySQL 服务器关闭,则重新启动 NodeJS 服务器

javascript - 如何使用 jasmine 对 jquery ajax 调用进行单元测试?

javascript - 为什么我们需要重启 Express 服务器才能在浏览器上看到变化?

node.js - MongoDB 找不到 Promise 类型定义

angularjs - 监视另一个函数返回的函数

javascript - 在 if 语句中调用函数时的 Jasmine 测试用例