在 vs 代码中调试用 typescript 节点编写的 jasmine 测试

Posted

技术标签:

【中文标题】在 vs 代码中调试用 typescript 节点编写的 jasmine 测试【英文标题】:Debug jasmine tests written in typescript node in vs code 【发布时间】:2018-10-16 15:58:57 【问题描述】:

我的单元测试是用 jasmine 编写的,并且在 typescript 中

// about.service.spec.ts
// say 4 to 5 test cases

// spec/support/jasmine.json

  "spec_dir": "src/tests/",
  "spec_files": ["**/*.spec.ts"],
  "helpers": ["jasmine-helpers/**/*.ts"],
  ...


// launch.json - vscode file

  "version": "0.2.0",
  "configurations": [
      "type": "node",
      "request": "launch",
      "name": "Jasmine tests",
      "preLaunchTask": "debuggertests",
   ]


// tasks.json - vscode 

 "version": "2.0.0",
 "tasks": [
    "label": "debuggertests",
    "type": "npm",
    "script": "test:unit",
    "problemMatcher": []
  ]


// package.json
// have to use jasmine-ts which is flavor over ts-node
"test:unit": "jasmine-ts JASMINE_CONFIG_PATH=spec/support/jasmine.json"

我已使用此配置在 vscode 中调试 .spec.ts 文件,但它没有触发调试器,而是运行所有测试并开始调试。

我在 about.service.spec.ts 的一个测试用例中设置了一个断点,但没有触发断点。谁能帮我设置 jasmine 测试的 vscode 调试?

【问题讨论】:

【参考方案1】:

在新的 jasmine-ts 版本中,您必须将 jasmine.json 包含到 args 中,如下所示:


  "type": "node",
  "request": "launch",
  "name": "Jasmine Current File",
  "program": "$workspaceFolder/node_modules/jasmine-ts/lib/index",
  "args": ["--config=jasmine.json", "$file"],
  "console": "integratedTerminal",
  "internalConsoleOptions": "neverOpen"

为了避免这个问题:

未找到规格 在 0.003 秒内完成 不完整:未找到规格 随机使用种子 60766 (jasmine --random=true --seed=60766)

【讨论】:

【参考方案2】:

以下配置将调试当前测试文件-请在VS Code中打开所需的测试文件并使用此配置开始调试:


      "type": "node",
      "request": "launch",
      "name": "Jasmine Current File",
      "program": "$workspaceFolder/node_modules/jasmine-ts/lib/index",
      "args": ["$file"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
 

【讨论】:

以上是关于在 vs 代码中调试用 typescript 节点编写的 jasmine 测试的主要内容,如果未能解决你的问题,请参考以下文章

无法在 TypeScript 中调试 - VS Code

VS Code 或 Chrome 开发工具:调试 NPM Workspaces (monorepo) TypeScript + React 代码

在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量

使用 VS Code 调试在 Docker 容器中使用 ts-node 运行的 TypeScript 应用程序时,如何能够正确设置断点?

如何为 VS Code 的集成终端设置节点版本?

Webstorm- Nodemon + Typescript + Docker - 调试器已连接但断点不起作用