在Typescript,Mocha和VSCode上描述未定义的异常

时间:2019-03-20 10:09:25

标签: typescript visual-studio-code mocha

由于某种原因,我的摩卡测试脚本抛出了“未定义描述”的异常。

我已经阅读并尝试了这些SO问题提出的解决方案,但是没有运气:
describe is not a function
"Mocha describe is not defined duplicate"

其他链接是:
typescript mocha describe is not a function

这是我的VSCode launch.json。

{
  "type": "node",
  "request": "launch",
  "name": "Mocha Tests",
  "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
  "args": [
    "-u",
    "tdd",
    "--timeout",
    "999999",
    "--colors",
    "${workspaceRoot}/dist/tests/**/*.js"
  ],
  "outFiles": ["${workspaceFolder}/dist/tests/**/*.js"],
  "sourceMaps": true,
  "protocol": "inspector",
  "internalConsoleOptions": "openOnSessionStart"
}

这是我的摩卡咖啡测试脚本:

import "mocha";
import assert = require("assert");

describe("Init", () => {
  before(() => {
    console.log("before-hook");
  });

  it("connected", () => {
    assert(true, "is not true");
  });
});

这是我的tsconfig.json:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "strict": true,
    "noImplicitAny": false,
    "module": "commonjs",
    "target": "es6",
    "lib": [ "es6" ],
    "sourceMap": true,
    "outDir": "dist",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "strictNullChecks": true,
    "allowJs": false,
    "checkJs": false,
    "types": [
      "node"
    ]
  },
  "compileOnSave": true
}

我在这里做错了什么?我真的需要重新使用摩卡咖啡。

4 个答案:

答案 0 :(得分:5)

在这里回答我自己的问题。

在安装Mocha 6.1.1之后,我已经解决了这个问题。

在launch.json上,将args数组从“ tdd”更改为“ bdd”,以便:
"-u", "bdd"

5.x版使用了“ tdd”选项,因此下一个主要版本引起了不良的书面配置。

答案 1 :(得分:0)

也许可以通过在mocha内的types中指定tsconfig.json来起作用

{
  "compilerOptions": {
    ...
    "types": [
      "node",
      "mocha" <--- specify here
    ]
  },
  "compileOnSave": true
}

也不要忘记安装@types/mocha

npm install @types/mocha --save-dev

希望它可以解决您的问题

答案 2 :(得分:0)

您的测试文件是否使用Javascript编写(您在launch.json中引用* .js)?

我正在使用ts-node调试单元测试,并直接引用Typescript测试文件,因此我的launch.json条目如下所示。在使用ts-node之前,从VS Code内部运行时遇到“描述未定义”错误。

{
  "type": "node",
  "request": "launch",
  "name": "Unit tests (mocha)",
  "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
  "args": [
    "-r",
    "ts-node/register",
    "--timeout",
    "999999",
    "--colors",
    "${workspaceFolder}/test/**/*Test.ts",
  ],
  "console": "integratedTerminal",
  "internalConsoleOptions": "neverOpen",
  "protocol": "inspector"
}

答案 3 :(得分:0)

删除此导入:

import { describe, it } from 'mocha';

似乎要为我修复。