Angular 版本 18 - SpyNgModuleFactoryLoader 的替代品,用于延迟加载模块的单元测试

问题描述 投票:0回答:1

我正在尝试为带有 canMatch 防护的延迟加载模块编写单元测试用例。我已经审查了 Stack Overflow 上的多个线程,但提供的解决方案要么过时,要么不可行。

SpyNgModuleFactoryLoader
选项在 Angular 版本 13 中已弃用,并且在最新版本 18 中不再可用。是否有任何替代解决方案可以使用
loadChildren
测试延迟加载模块?

enter image description here

enter image description here

angular unit-testing module lazy-loading
1个回答
0
投票

这是我在 Angular 14 中的做法,FWIW。

模块中:

const routes: Routes = [
  {
   ...
      { path: 'myModule', loadChildren: () => 
          import('./myModule/myModule.module').then(m => m.MyModule) },
...
    ]
  }];

然后在UT:

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [
        LoggerTestingModule, 
        RouterTestingModule,
      ],
    });
    router = TestBed.inject(Router);
  });

  it('should load MyModule when path is myModule', async () => {
    const { MyModule } = await import('./myModule/myModule.module');
    const config = router.config[0];

    if (config.children) {
      const x: (Route | undefined) = config.children.find(rc => rc.path === 'myModule');
      expect(await (x?.loadChildren?.())).toEqual(MyModule)
    }
  });
© www.soinside.com 2019 - 2024. All rights reserved.