Как можно импортировать функцию ожидания chai в глобальном масштабе на машинописном тексте? - PullRequest
0 голосов
/ 06 мая 2020

Другие связанные вопросы просто задавайте на js, но я знаю, что команда Chai уже предоставила 'chai / register-expect' и et c ..

Я перехожу с jest на chai, и когда я использовал jest, это делается просто набрав 'jest' в поле "types" в tscofnig. json, тогда ожидаемая функция автоматически ссылалась на файл @ types / jest index.d.ts.

но @types / chai или chai не поддерживают это. И они рекомендуют, прежде чем писать вопрос, опубликовать на Stackoverflow. WTF, верно?

после серфинга по этому поводу, я понимаю, что все импортируют функцию 'expect' для каждого файла, например typeorm или других проектов машинописного текста .. Holy It is so a wwwwwwwful.

* 1009 Я ожидаю импорта по файлу? нет возможности?

Я могу ответить шуткой, но это дерьмо ужасно. Лучше импорт ожидает для всех файлов.

он не работает mocha -r chai/register-expect тоже.

Я тестировал npx mocha -r node_modules/ts-node/register/transpile-only -r chai/register-expect -r ts-node/register -r tsconfig-paths/register some.test.ts

вот мой tsconfig. json .

{
    "compilerOptions": {
        "module": "commonjs",
        "esModuleInterop": true,
        "target": "es5",
        "noImplicitAny": false,
        "moduleResolution": "node",
        "sourceMap": true,
        "outDir": "dist",
        "baseUrl": "src",
        "skipLibCheck": true,
        "downlevelIteration" : true,
        "paths": {
             ... bla bla
            "main/*" : [
                "main/*"
            ],
            "controllers/*" : [
                "main/controllers/*"
            ],
            "middleware/*" : [
                "main/middleware/*"
            ],
            "*": [
                "node_modules/*"
            ]
        },
        "types" : [
            "node",
            "mocha",
            "chai"
        ],
        "typeRoots": [
            "node_modules/@types",
            "types"
        ],
        "lib": [
            "es2017",
            "dom"
        ],
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "resolveJsonModule" : true
    },
    "exclude": [
        "node_modules"
    ],
    "include": [
        "src/**/*.ts",
        "**/*.test.ts"
    ]
}

Ответы [ 2 ]

1 голос
/ 22 августа 2020

chai/register-expect зарегистрирует глобальную функцию chai expect. Вам необходимо объяснить своему компилятору машинописного текста, что он у вас есть, создав собственный файл определения.

Создайте структуру каталогов:

typings
    global
       index.d.ts

В свой index.d.ts добавьте следующее:

declare const expect: Chai.ExpectStatic

Теперь ваш tsconfig. json должен выглядеть примерно так:

    "typeRoots": [
      "node_modules/@types", "./typings"
    ],
    "types": [
      "mocha",
      "chai",
      "node",
      "global"
    ]

Примечание typings каталог и импорт модуля global.

Это необходимо, потому что ts-node обычно не заботится о ваших пользовательских типах

0 голосов
/ 07 мая 2020

Решить проблему с помощью linux команд частично ..

for file in $(find src/test); do `sed -i '' "1i\\
import { assert } from 'chai'; \\
"  $file;
done;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...