当前位置: 首页 > 知识库问答 >
问题:

在typescript源文件中使用ts jest断点的vscode jest

董高朗
2023-03-14

我有一个TypeScript项目,正在通过ts Jest使用Jest进行测试。在VS代码中,我安装了vscode jest插件。调试没有像我希望的那样正常工作:

  • 我可以通过点击vscode jest制作的DebugCodeLens启动调试会话
  • 如果在测试代码中设置断点,调试器将按预期在断点处暂停
  • 但如果我在源代码中设置断点,调试器将忽略它

我猜这是因为ts玩笑的工作方式。断点可能永远找不到,因为测试是在JS文件而不是TS文件上运行的。

如果我在用Create React App引导的JS项目中尝试同样的方法,我可以在源文件中设置断点,调试器将停止。这很有趣,因为这些源文件也是由babel编译的。。。

我想知道是否有可能调整我的设置,以便调试器能够识别源文件中的断点。

在下面发布一些可能相关的文件:

开玩笑。配置。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个答案

禄豪
2023-03-14

嗯,我处于你的情况,但是我能够在源代码和测试代码上设置断点。请注意,即使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'
};

编辑:如何在调试模式下启动笑话?

 类似资料:
  • 本文向大家介绍在ASP.NET中支持断点续传下载大文件(ZT)源码,包括了在ASP.NET中支持断点续传下载大文件(ZT)源码的使用技巧和注意事项,需要的朋友参考一下 IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag 客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客

  • 问题内容: 我有一个向stdout写入大量数据的过程,我正在将其重定向到日志文件。我想通过不时地将当前文件复制到一个新名称并将其截断来限制文件的大小。 我通常的截断文件技巧,例如 不起作用,大概是因为进程正在使用它。 有什么办法可以截断文件?还是将其删除,并以某种方式将流程的stdout与新文件相关联? FWIW,这是第三方产品,我无法对其进行更改以更改其日志记录模型。 *通过文件进行 *EDIT

  • 我正在尝试使用Node fetch下载一个typescript(Node.js)文件。 根据文档和此处的堆栈溢出答案,以下代码应该可以工作: 但我得到以下错误: 我还检查了类型文件中节点获取类型的响应。它没有管道功能。 我在这里检查了节点获取的类型定义,根据这里的接口,响应的主体似乎是一个可读的流: } 并有一个函数pipeTo(我从这里的留档中找到了这个。我在浏览了提到的留档后尝试运行以下代码:

  • /* a/file.c */ #include <stdio.h> void print_a (void) { puts ("a"); } /* b/file.c */ #include <stdio.h> void print_b (void) { puts ("b"); } /* main.c */ extern void print_a(void); extern void

  • 问题内容: bigquery CLI可以使用输入文件吗? 问题答案: 如果您使用的是UNIX(或Windows上安装了cygwin),则可以使用xargs: 或者,您可以使用反引号: 请注意,bq一次只能处理一个命令-如果您的.sql脚本有多个查询,则需要将文件分割为;

  • 问题内容: 假设我的应用程序的原始资源文件夹中有一个包含JSON内容的文件。如何将其读入应用程序,以便解析JSON? 问题答案: 参见openRawResource。这样的事情应该起作用: