未定义单元测试摩卡Visual Studio Code描述

时间:2019-03-21 15:17:22

标签: typescript unit-testing visual-studio-code mocha

如果我在控制台中运行,则测试运行正常

        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 Code调试控制台中

            /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)                

3 个答案:

答案 0 :(得分:2)

最后!!!经过长时间的搜索,红色的一些教程和评论我找到了解决方案。 问题出在配置上

打开测试配置文件并删除以下几行

            "-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"
            },

再次运行测试,它将起作用。

答案 1 :(得分:0)

我在这里偶然发现了摩卡文档:

InterfacesUI Switch

TLDR;

--ui, -u开关有两个选项:bddtdd。但是,它还指出当未提供bdd开关时,它将默认为--ui, -u

因此,当您使用--ui tdd开关时,与BDD的suite(), test(), suiteSetup(), suiteTeardown(), setup(), and teardown()方法相比,您应该使用提供describe(), context(), it(), specify(), before(), after(), beforeEach(), and afterEach()的TDD接口。

这说明了为什么未定义describe功能的原因。

答案 2 :(得分:0)

如果有人正在寻找,这是我在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"