关于Visual Studio代码:Typescript,Mocha和VSCode上的Describe未定义异常

Describe is not defined exception on Typescript, Mocha and VSCode

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

我已经阅读并尝试了这些SO问题建议的解决方案,但是没有运气:
描述不是功能
"摩卡描述未定义重复项"

其他链接是:
打字稿摩卡描述不是功能

这是我的VSCode launch.json。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
 "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"
}

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

1
2
3
4
5
6
7
8
9
10
11
12
import"mocha";
import assert = require("assert");

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

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

这是我的tsconfig.json:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
 "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
}

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


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

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

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

5.x版使用了" tdd"选项,因此下一个主要版本引起了配置错误的问题。


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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
 "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"
}


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

1
2
3
4
5
6
7
8
9
10
{
 "compilerOptions": {
    ...
   "types": [
     "node",
     "mocha" <--- specify here
    ]
  },
 "compileOnSave": true
}

同样不要忘记安装@types/mocha

1
npm install @types/mocha --save-dev

希望它能解决您的问题