Машинопись мокко опиши не функция

У меня проблема в том, что mocha-typcript продолжает выдавать ошибку, describe не определено.

    TypeError: mocha_typescript_1.describe is not a function
    at DatabaseTest.WrongPath (test/database_test.ts:21:9)
    at Context.<anonymous> (node_modules/mocha-typescript/index.ts:218:22)

Мой tsconfig.json

    {
      "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "outDir": "dist",
        "sourceMap": true,
        "lib": ["es6"],
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "typeRoots": [
          "./node_modules/@types"
        ],
        "types": [
          "node", "mocha", "chai"
        ]
      },
      "include": [
        "src/**/*.ts",
        "test/**/*.ts"
      ],
      "exclude": [
        "node_modules"
      ]
    }

Мой пакет.json

    {
      //omitted
      "main": "App.js",
      "scripts": {
        "pretest": "tsc",
        "test": "nyc mocha --require ts-node/register test/**/*_test.ts ",
        "watch": "mocha-typescript-watch",
        "prepare": "tsc"
      },

      // ommitted

      "dependencies": {
        "@types/chai": "^4.0.6",
        "@types/jsesc": "^0.4.29",
        "@types/mocha": "^2.2.44",
        "@types/node": "^8.0.53",
        "@types/sqlite3": "^3.1.1",
        "chai": "^4.1.2",
        "express": "^4.16.2",
        "express-longpoll": "0.0.4",
        "jsesc": "^2.5.1",
        "mocha": "^4.0.1",
        "mocha-typescript": "^1.1.12",
        "nyc": "^11.3.0",
        "reflect-metadata": "^0.1.10",
        "sequelize": "^4.26.0",
        "sequelize-typescript": "^0.6.1",
        "source-map-support": "^0.5.0",
        "sqlite3": "^3.1.13",
        "ts-events": "^3.2.0",
        "ts-node": "^3.3.0",
        "typescript": "^2.6.2",
        "typings": "^2.1.1"
      }
    }

database_test.ts:

    //Unit testing script for Database.ts
    /// <reference path="../node_modules/mocha-typescript/globals.d.ts" />
    //// <reference path="../node_modules/@types/mocha/index.d.ts" />

    import { suite, test, describe, slow, timeout  } from "mocha-typescript"
    import { assert } from "chai";
    import 'mocha'

    @suite(slow(1000), timeout(3000))
    export class SampleTest {

        @test testFunc(){
            describe("Sample function", ()=>{
                it("Should succeed without any problems", (done) => {
                    assert.isTrue(true);
                    done();
                })
            });
        }
    }

Полный журнал:

    > project@1.0.0 pretest /home/user/folder/project
    > tsc


    > project@1.0.0 test /home/user/folder/project
    > nyc mocha --require ts-node/register test/**/*.ts



      SampleTest
        1) testFunc            

      0 passing (13ms)
      1 failing

      1) SampleTest
           testFunc:
         TypeError: mocha_typescript_1.describe is not a function
          at DatabaseTest.WrongPath (test/database_test.ts:21:9)
          at Context.<anonymous> (node_modules/mocha-typescript/index.ts:218:22)


    ----------|----------|----------|----------|----------|----------------|
    File      |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
    ----------|----------|----------|----------|----------|----------------|
    All files |  Unknown |  Unknown |  Unknown |  Unknown |                |
    ----------|----------|----------|----------|----------|----------------|
    npm ERR! Test failed.  See above for more details.

Как вы можете видеть, я пробовал несколько вещей, таких как настройки typeRoots а также types в tsconfig.json, import mocha и два разных файла определения типа. Ни один из них не сработал, и я запутался во всех возможных комбинациях.

Я уже некоторое время пытаюсь запустить typcript-mocha, иногда он работает, иногда нет. Четкого объяснения у меня нет, но я бы наверняка хотел.

1 ответ

Решение

Оказывается, ошибка дается из-за объявления двойного ключевого слова. По-видимому import 'mocha' достаточно, чтобы объявить describe ключевое слово.

Мне просто пришлось настроить строку импорта из

import { suite, test, describe, slow, timeout  } from "mocha-typescript"

в

import { suite, test, slow, timeout  } from "mocha-typescript"
Другие вопросы по тегам