我正在尝试为带有 canMatch 防护的延迟加载模块编写单元测试用例。我已经审查了 Stack Overflow 上的多个线程,但提供的解决方案要么过时,要么不可行。
SpyNgModuleFactoryLoader
选项在 Angular 版本 13 中已弃用,并且在最新版本 18 中不再可用。是否有任何替代解决方案可以使用 loadChildren
测试延迟加载模块?
这是我在 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)
}
});