单元测试 mocha Visual Studio 代码描述未定义
unit test mocha Visual Studio Code describe is not defined
如果我 运行 在控制台中测试 运行 没问题
mocha --require ts-node/register tests/**/*.spec.ts
注意:我安装了 mocha 和 mocha -g
我想 运行 来自 Visual Studio 代码
的单元测试
launcgh.js 文件
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
"args": [
"--require",
"ts-node/register",
"-u",
"tdd",
"--timeout",
"999999",
"--colors",
"${workspaceFolder}/tests/**/*.spec.ts"
],
"internalConsoleOptions": "openOnSessionStart"
},
非常简单的测试文件
import { expect } from 'chai';
const hello = () => 'Hello world!';
describe('Hello function', () => {
it('should return hello world', () => {
const result = hello();
expect(result).to.equal('Hello world!');
});
});
但在 Visual studio 代码调试控制台中
/usr/local/bin/node --inspect-brk=15767 node_modules/mocha/bin/_mocha --require ts-node/register -u tdd --timeout 999999 --colors /Applications/MAMP/htdocs/ddd-board-game/backend/tests/**/*.spec.ts
Debugger listening on ws://127.0.0.1:15767/bdec2d9c-39a7-4fb7-8968-8cfed914ea8d
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
/Applications/MAMP/htdocs/ddd-board-game/backend/tests/dummy.spec.ts:3
source-map-support.js:441
describe('Hello function', () => {
^
ReferenceError: describe is not defined
source-map-support.js:444
at Object.<anonymous> (/Applications/MAMP/htdocs/ddd-board-game/backend/tests/dummy.spec.ts:1:1)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Module.m._compile (/Applications/MAMP/htdocs/ddd-board-game/backend/node_modules/ts-node/src/index.ts:414:23)
终于!!!经过长时间的搜索和阅读一些教程和评论后,我找到了解决方案:问题出在配置上。
打开测试配置文件并删除以下行:
"-u", <<<< delete this line
"tdd", <<<< delete this line
launch.js
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
"args": [
"--require",
"ts-node/register",
"-u", <<<< delete this line
"tdd", <<<< delete this line
"--timeout",
"999999",
"--colors",
"${workspaceFolder}/tests/**/*.spec.ts"
],
"internalConsoleOptions": "openOnSessionStart"
},
运行再次测试,就可以了。
我在这里偶然发现了 mocha 文档:
Interfaces and UI Switch
TLDR;
--ui, -u
开关有两个选项:bdd
和tdd
。但是,它还声明当未提供 --ui, -u
开关时它将默认为 bdd
。
因此,当您使用 --ui tdd
开关时,与 BDD 的 describe(), context(), it(), specify(), before(), after(), beforeEach(), and afterEach()
方法相比,您应该使用提供 suite(), test(), suiteSetup(), suiteTeardown(), setup(), and teardown()
的 TDD 接口。
这就解释了为什么它尖叫 describe
函数未定义。
如果有人要的话,这是我2020年6月的配置。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/.bin/mocha",
"args": [
"--extension",
"ts",
"--watch",
"src",
"--require",
"ts-node/register",
"${workspaceFolder}/src/**/*.spec.ts"
],
"internalConsoleOptions": "openOnSessionStart"
}
]
}
将 "src",
更改为您的自定义位置,将 "${workspaceFolder}/src/**/*.spec.ts"
更改为您的自定义测试文件
如果我 运行 在控制台中测试 运行 没问题
mocha --require ts-node/register tests/**/*.spec.ts
注意:我安装了 mocha 和 mocha -g
我想 运行 来自 Visual Studio 代码
的单元测试launcgh.js 文件
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
"args": [
"--require",
"ts-node/register",
"-u",
"tdd",
"--timeout",
"999999",
"--colors",
"${workspaceFolder}/tests/**/*.spec.ts"
],
"internalConsoleOptions": "openOnSessionStart"
},
非常简单的测试文件
import { expect } from 'chai';
const hello = () => 'Hello world!';
describe('Hello function', () => {
it('should return hello world', () => {
const result = hello();
expect(result).to.equal('Hello world!');
});
});
但在 Visual studio 代码调试控制台中
/usr/local/bin/node --inspect-brk=15767 node_modules/mocha/bin/_mocha --require ts-node/register -u tdd --timeout 999999 --colors /Applications/MAMP/htdocs/ddd-board-game/backend/tests/**/*.spec.ts
Debugger listening on ws://127.0.0.1:15767/bdec2d9c-39a7-4fb7-8968-8cfed914ea8d
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
/Applications/MAMP/htdocs/ddd-board-game/backend/tests/dummy.spec.ts:3
source-map-support.js:441
describe('Hello function', () => {
^
ReferenceError: describe is not defined
source-map-support.js:444
at Object.<anonymous> (/Applications/MAMP/htdocs/ddd-board-game/backend/tests/dummy.spec.ts:1:1)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Module.m._compile (/Applications/MAMP/htdocs/ddd-board-game/backend/node_modules/ts-node/src/index.ts:414:23)
终于!!!经过长时间的搜索和阅读一些教程和评论后,我找到了解决方案:问题出在配置上。
打开测试配置文件并删除以下行:
"-u", <<<< delete this line
"tdd", <<<< delete this line
launch.js
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
"args": [
"--require",
"ts-node/register",
"-u", <<<< delete this line
"tdd", <<<< delete this line
"--timeout",
"999999",
"--colors",
"${workspaceFolder}/tests/**/*.spec.ts"
],
"internalConsoleOptions": "openOnSessionStart"
},
运行再次测试,就可以了。
我在这里偶然发现了 mocha 文档:
Interfaces and UI Switch
TLDR;
--ui, -u
开关有两个选项:bdd
和tdd
。但是,它还声明当未提供 --ui, -u
开关时它将默认为 bdd
。
因此,当您使用 --ui tdd
开关时,与 BDD 的 describe(), context(), it(), specify(), before(), after(), beforeEach(), and afterEach()
方法相比,您应该使用提供 suite(), test(), suiteSetup(), suiteTeardown(), setup(), and teardown()
的 TDD 接口。
这就解释了为什么它尖叫 describe
函数未定义。
如果有人要的话,这是我2020年6月的配置。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/.bin/mocha",
"args": [
"--extension",
"ts",
"--watch",
"src",
"--require",
"ts-node/register",
"${workspaceFolder}/src/**/*.spec.ts"
],
"internalConsoleOptions": "openOnSessionStart"
}
]
}
将 "src",
更改为您的自定义位置,将 "${workspaceFolder}/src/**/*.spec.ts"
更改为您的自定义测试文件