3

我正在尝试为我的 Angular 项目集成 jest 以进行单元测试。

我按照此链接中的说明进行操作。

我在ENOENT: no such file or directory, open 'E:\source-code\packages\core\src\view\ng_module.ts'跑步时遇到了一个奇怪的错误。

我的文件夹结构没有名为package的文件夹。经过大量挖掘后,我发现packages\core\src\view\ng_module.ts'npm 包使用了该文件夹(角度:P)角度中使用的路径的屏幕截图

我不知道这个错误是如何被抛出的,当我通过业力运行时不会发生

这是我开玩笑的配置 "jest": { "preset": "jest-preset-angular", "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts", "globals": { "ts-jest": { "tsConfigFile": "src/tsconfig.spec.json", "useBabelrc": true }, "__TRANSFORM_HTML__": true }, "transform": { "^.+\\.(ts|html)$": "<rootDir>/node_modules/jest-preset-angular/preprocessor.js", "^.+\\.js$": "babel-jest" }, "transformIgnorePatterns": [ "<rootDir>/node_modules/(?!(@ngrx|ngx-dialog|ng-infinity))" ] }

4

1 回答 1

1

是时候回答我自己的问题了。

好像是版本问题。

在撰写此答案时,最新版本是:

 "@types/jest": "^22.0.1",
 "jest": "^22.0.4",
 "jest-preset-angular": "^5.0.0"

支持我的项目(角度v4)的项目是:

"@types/jest": "^20.0.7",
"jest": "^20.0.4",
"jest-preset-angular": "^2.0.5"

在此之后,这些错误停止发生。

我也检查了这个 git repo的结果(也是用 ng4 编写的):P。一旦我在那个 repo 中将 jest 版本更改为最新版本,它也会出现同样奇怪的路径packages\core\src\....错误。

但是现在开始发生一些新的错误。我正在使用jest.spyOn().mockReturnValue()它在实际组件函数中引发错误,这不应该是这种情况,因为应该模拟函数调用并使用提供的返回值。我也尝试jest.spyOn().mockImplementation()过,但没有成功。

我怀疑spyOn导致错误的方法。

于 2018-01-07T11:43:48.273 回答