我刚刚使用cli创建了角度应用程序(v8-今天的最新版本)。到目前为止,我没有做任何特别的事情。 (ng new ng-app
。
我使用jest-schematic向我的棱角项目添加玩笑。
cd ng-app
ng add @briebug/jest-schematic
问题是使用npm run test
:
> jest
FAIL src/app/app.component.spec.ts
● Test suite failed to run
File not found: jest-preset-angular/InlineHtmlStripStylesTransformer.js (resolved as: C:\ng-app\jest-preset-angular\InlineHtmlStripStylesTransformer.js)
这里缺少什么?我该如何解决?
答案 0 :(得分:4)
在jest-preset-angular documentation中,相应的配置是:jest-preset-angular/build/InlineFilesTransformer
。
因此,请在您的package.json
中更改以下行:
"astTransformers": [
"jest-preset-angular/InlineHtmlStripStylesTransformer.js"
]
到
"astTransformers": [
"jest-preset-angular/build/InlineFilesTransformer",
"jest-preset-angular/build/StripStylesTransformer"
]
答案 1 :(得分:0)
对我来说,package.json中不存在astTransformers。进行详尽搜索,该条目位于第24行的jest.impl.js中。
(Angular 8.2.1。使用@ nrwl / angular 8.2.7)
除此之外,将应用相同的更改,将行更改为:
"astTransformers": [
"jest-preset-angular/build/InlineFilesTransformer",
"jest-preset-angular/build/StripStylesTransformer"
]
请注意笑话小组在该行的评论:
// TODO: This is hacky, We should probably just configure it in the user's workspace
// If jest-preset-angular is installed, apply settings
我绝对不喜欢编辑该文件,但是将更改放入jest.config文件并不能解决问题(我希望lib可以将其作为选项使用),如果它确实属于package.json,我不知道在哪里。
答案 2 :(得分:0)
已接受答案的语法已更改。如果您需要在 Angular 12.x 或 @nrwl/angular 12.x 上执行此操作,请尝试 -
在jest.config.js
-
module.exports = {
// [...]
globals: {
'ts-jest': {
astTransformers: {
before: [
'jest-preset-angular/build/InlineFilesTransformer',
'jest-preset-angular/build/StripStylesTransformer',
],
},
},
},
}
在package.json
-
{
"jest": {
"globals": {
"ts-jest": {
"astTransformers": {
"before": [
"jest-preset-angular/build/InlineFilesTransformer",
"jest-preset-angular/build/StripStylesTransformer"
]
}
}
}
}
}
参考 - Link