Angular 8和jest-找不到文件:jest-preset-angular / InlineHtmlStripStylesTransformer.js

时间:2019-10-22 07:12:09

标签: angular jestjs

我刚刚使用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)

这里缺少什么?我该如何解决?

3 个答案:

答案 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