我有nodejs模块,我通过运行jasmine-ts --config=spec/support/jasmine.json
用jasmine ts[0.3.0]对其进行单元测试。
我的意图是运行一些单元测试,并在我正在测试的函数内部的断点处停止。不幸的是,调试器只在单元测试中停止,而在生产代码中不停止。
可能是什么问题
更多关于我尝试的信息。
- 在我的Intellij IDEA 2020.1中,对更改进行了Typescript重新编译。我可以识别出它的工作原理是正确的,因为当我更改生产代码中的一些typescript文件时,我可以在
dist
文件夹中的相应Javascript文件中看到更改 - 如果我运行我的模块,那么我也可以在断点处停止
- 奇怪的是,在使用
mocha
的另一个模块中执行单元测试时,我可以在生产代码中的断点处停止,并且运行方式如下:npx mocha -r ts-node/register test/**/*.test.ts
思考可能出了什么问题。
-
依赖项可能无法正确协同工作。我最近正在将库更新到最新版本,但注意到
jasmine-ts
需要的ts-node
小于8,所以目前我的package.json中有以下版本:"devDependencies": { "jasmine": "3.3.1", "jasmine-ts": "^0.3.0", "ts-node": "7.0.1", "nyc": "^13.0.1", "typescript": "^3.8.3", "@types/jasmine": "^3.3.8", "jasmine-spec-reporter": "^4.2.0", "jasmine-reporters": "^2.3.2" }
-
源映射可能已损坏。我已经检查了一些
*.js.map
文件,看起来它们指向了正确的*.ts
文件,所以,不知道该检查什么。 -
我在想排版配置是否也会产生影响,但我不清楚具体是如何影响的。不管怎样,这是我的tsconfig.json:
{ "compilerOptions": { "strict": false, "target": "es2015", "sourceMap": true, "module": "commonjs", "outDir": "./dist", "moduleResolution": "node" }, "include": [ "src/**/*.ts" ], "exclude": [ "./spec/**/*.ts", "./node_modules/**/*.ts" ] }
-
肯定出了问题。当我想查看我使用nyc-npm测试运行的覆盖率时,我会看到Javascript文件,但它应该是Typescript。但我认为这可能是一个不同的问题,但可能不是。。。
有解决问题的提示吗?:(
更新:
解决此问题的一种方法是从Intellij IDEA和其他可能影响稳定工作的文件中清除代码,方法是将项目从计算机中完全删除并再次克隆。通过这个操作,它帮助我在使用jasmine的其他模块中的断点处停止,然而,当我进入生产代码时,我的模块仍然有奇怪的状态,但不是按顺序。我想我看到了一些关于承诺的错误,但我没有。
问题是我在语言&框架->Typescript。
这带来的功能是,对于每个.ts
文件,都将生成.js
文件,但在我的情况下,所有js
编译的文件都必须位于我在tsconfig
文件中指定的dist
目录中。我的假设是,在调试会话期间,调试器不知道要获取哪个文件,或者正在获取错误的文件。将重新编译设置为将更改为关闭解决了问题。
尽管我仍然有一些奇怪的行为,因为调试器比预期更早地到达生产代码,但我认为这是不同的情况,与Intellij IDEA偏好无关,而是与周期性运行任务的异步代码有关。