vscode-jest с точками останова ts-jest в исходных файлах машинописи - PullRequest
0 голосов
/ 02 июля 2018

У меня есть проект TypeScript, и я использую Jest через ts-jest для своих тестов. В VS Code у меня установлен плагин vscode-jest . Отладка не совсем работает, как мне хотелось бы:

  • Я могу начать сеанс отладки, нажав Debug CodeLens, созданный vscode-jest
  • Если я поставлю точку останова в коде test , отладчик сделает паузу в точке останова, как и ожидалось
  • Но если я поставлю точку останова в исходном коде, отладчик проигнорирует ее

Полагаю, это из-за того, как работает ts-jest. Точка останова, вероятно, никогда не найдена, поскольку тесты выполняются для файлов JS, а не файлов TS.

Если я попробую то же самое в проекте JS, который был загружен с помощью Create React App, я могу установить точки останова в исходных файлах, и отладчик остановится. Что интересно, потому что эти исходные файлы также компилируются babel ...

Интересно, можно ли настроить мои настройки, чтобы точки останова в исходных файлах распознавались отладчиком.

Публикация некоторых файлов ниже, которые могут иметь отношение к теме:

jest.config.js

module.exports = {
    transform: {
        '^.+\\.tsx?$': 'ts-jest',
    },
    testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',
    testPathIgnorePatterns: ['/dist/', '/node_modules/'],
    moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
    collectCoverage: false,
};

tsconfig.json

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "declaration": true,
        "outDir": "./dist",
        "strict": true,
        "noImplicitAny": true,
        "strictNullChecks": true,
        "strictPropertyInitialization": true,
        "noImplicitThis": true,
        "alwaysStrict": true,
        "noUnusedLocals": true,
        "noImplicitReturns": true,
        "noFallthroughCasesInSwitch": true,
        "esModuleInterop": true,
        "sourceMap": true,
        "watch": false
    },
    "include": ["src"],
    "compileOnSave": true
}

1 Ответ

0 голосов
/ 05 сентября 2018

хм, я в вашей ситуации, но я могу установить точки останова как для исходного кода, так и для тестового кода. Обратите внимание, что даже если vscode помечает мои контрольные точки как «непроверенные» в исходном коде, они корректно останавливаются при достижении их.

Я передам вам мою конфигурацию:

tsconfig.json:

{
    "compilerOptions": {
        "target": "es5",
        "outDir": "build",
        "module": "commonjs",
        "strict": true,
        "noImplicitReturns": true,
        "noFallthroughCasesInSwitch": true,
        "sourceMap": true,
        "declaration": false,
        "moduleResolution": "node",
        "suppressImplicitAnyIndexErrors": true,
        "removeComments": true,
        "allowJs": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "forceConsistentCasingInFileNames": true,
        "noEmitOnError": true,
        "typeRoots": [
            "./node_modules/@types",
            "./types"
        ],
        "lib": [
            "es5",
            "es6",
            "dom",
            "scripthost"
        ],
        "traceResolution": false,
        "listEmittedFiles": false,
        "listFiles": false,
        "pretty": true,
    },
    "exclude": [
        "node_modules/**/*.*",
        "build/**/*.*"
    ],
    "include": [
        "src/**/*.ts",
        "test/**/*.test.ts",
        "demo/**/*.ts"
    ],
}

jest.config.js

module.exports = {
    globals: {
        'ts-jest': {
            tsConfigFile: 'tsconfig.jest.json'
        },
        "__TRANSFORM_HTML__": true
    },
    moduleFileExtensions: [
        'ts',
        'js'
    ],
    transform: {
        "^.+\\.(ts|html)$": "ts-jest",
        "^.+\\.xml$": "<rootDir>/tools/xmlTransformer.js",
    },
    clearMocks: true,
    resetMocks: true,
    restoreMocks: true,
    collectCoverage: true,
    "collectCoverageFrom": [
        "**/src/**/*.ts"
    ],
    coverageDirectory: 'coverage',
    coverageReporters: [
        'lcov'
    ],
    // "coverageThreshold": {
    //     "global": {
    //         "branches": 80,
    //         "functions": 80,
    //         "lines": 80,
    //         "statements": 80
    //     }
    // },
    testEnvironment: 'jsdom',
    testMatch: [
        '**/test/unit/**/*.test.ts'
    ],
    setupTestFrameworkScriptFile: 'jest-mock-console/dist/setupTestFramework.js'
};

РЕДАКТИРОВАТЬ: как запустить Jest в режиме отладки?

...