Angular 13 + jest + Angular 库不工作

Angular 13 + jest + Angular library not working

我正在尝试在 Angular 13 项目中使用 jest 进行测试。 我使用 jest-preset-angular 和 @angular-builders/jest.

我使用 ngx-pipes,它是一个没有为 Angular13 编译的库。它在正常 Angular 构建期间工作正常。但是在开玩笑的测试中 运行 它会导致错误:

Error: Unexpected value 'NgStringPipesModule2' imported by the module 'DynamicTestModule'. Please add an @NgModule annotation.

最小复制:https://github.com/dhcode/jest-preset-angular-13-issue

在我的实际项目中,我对其他 Angular 库也有同样的错误。 我之前 运行 ng serve,所以 ngcc 编译是在 运行 测试之前完成的。

如何进行测试 运行 并识别使用旧 Angular 版本构建的外部库?

从表面上看,ngx-pipes 尚未发布 Ivy 发行版,您的项目在 运行 测试之前仍需要 ngcc

// package.json
{
  "scripts": {
    "test": "ngcc && ng test"
  }
}
> jest-tests@0.0.0 test
> ngcc && ng test

Processing legacy "View Engine" libraries:
- ngx-pipes [fesm2015/esm2015] (https://github.com/danrevah/ngx-pipes.git)
- ngx-pipes [esm2015/esm2015] (https://github.com/danrevah/ngx-pipes.git)
- ngx-pipes [main/umd] (https://github.com/danrevah/ngx-pipes.git)
Encourage the library authors to publish an Ivy distribution.
 PASS  src/app/app.component.spec.ts
  AppComponent
    ✓ should create the app (163 ms)
    ✓ should have as title 'jest-tests' (46 ms)
    ✓ should render title (44 ms)
    ✓ should render shortened text (33 ms)

-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |     100 |      100 |     100 |     100 |                   
 ...component.html |     100 |      100 |     100 |     100 |                   
 app.component.ts  |     100 |      100 |     100 |     100 |                   
-------------------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       4 passed, 4 total
Snapshots:   0 total
Time:        3.526 s, estimated 5 s
Ran all test suites.