Jest.js 导入特定库模块时无法编译测试

zf9nrax1  于 8个月前  发布在  Jest
关注(0)|答案(1)|浏览(152)

我想为一个Angular组件写一个测试。我们使用Jest。
要测试的组件使用模板中的库中的UI组件。如下所示:

<!-- my.component.html -->
<mylib-tab-group>
    <mylib-tab>
        <h1>Hello</h1>
    </mylib-tab>
</mylib-tab-group>

字符串
为了限制这个问题,目前我的测试中除了初始化TestBed之外没有其他内容,而TestBed只是将依赖项导入到相应的lib模块中。

import { TestBed } from "@angular/core/testing"
import { MyLibTabsModule } from "MyLib"

describe('LoginProcedure-Feature', () => {

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [
        MyLibTabsModule,
      ],
      declarations: [],
      providers: [],
    }).compileComponents()
  })

  it('placeholder', () => {
    expect(true).toBeTruthy()
  })
})


唯一不好的是,当你运行测试时,这个问题会打印在命令行上:

ReferenceError: Cannot access 'MyLibTabGroupComponent' before initialization

      1 | import { TestBed } from "@angular/core/testing"
    > 2 | import { MyLibTabsModule } from "MyLib"
        | ^
      3 |


当我查看堆栈跟踪时,问题似乎出在已编译的MyLibTabsModule模块中的deps: [{ token: MyLibTabGroupComponent }片段上。

MyLibTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: typescript
MyLibTabComponent, deps: [{ token: MyLibTabGroupComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });


但不幸的是我对此无能为力。
是什么导致了这种情况?

ux6nzvsh

ux6nzvsh1#

看起来jest找不到路径“MyLib”中的写入引用的组件MyLibTabGroupComponent。我的意思是,“MyLib”中的文件中的import语句可能引用了相对文件或jest找不到的路径。在tsconfig.json上配置的文件路径通常是罪魁祸首。
如果这就是问题所在,要修复它,您需要告诉jest,例如,@your-custom-path-name将被<rootDir>/app/your/app/folder替换
这是在jest.config文件的transform部分完成的。您可能希望使用ts-jest来简化编写必要的配置。
如果没有更多的代码,就很难提供更具体的信息。
另外,如果你能在stackblitz中提供一个最小的可重现问题,这将对你有很大的帮助。

相关问题