Angular 测试 NavigationError 事件处理程序
Angular test NavigationError event handler
我有一个方法可以处理块加载错误并显示通知。问题是我无法模拟 NavigationError
以通过过滤条件 filter((e) => e instanceof NavigationError && e.error.name === 'ChunkLoadError')
.
但是,我无法自行创建此错误。当我创建 NavigationError 实例时,出现
错误
Error: ASSERTION ERROR: NgModule 'NavigationError(id: 1, url: '1', error: 1)' is not a subtype of 'NgModuleType'. [Expected=> null != null <=Actual]
RouterTestingModule.withRoutes([
{
path: 'loadErr',
loadChildren: () =>Promise.resolve(new NavigationError(1, '1', 1)),
},
]),
如何创建此错误的实例?
您似乎不需要显式创建 NavigationError
。您可以拒绝将自动导致 NavigationError
.
的承诺
现在路由设置如下所示
RouterTestingModule.withRoutes([
{
path: 'loadErr',
loadChildren: () =>
Promise.reject({name: 'ChunkLoadError'}),
},
]),
以及测试本身
ngZone
.run(() => router.navigateByUrl('loadErr'))
.then(() => done.fail('Eror expected'))
.catch(() => expect(notificationService.showError).toHaveBeenCalled());
tick(100);
我有一个方法可以处理块加载错误并显示通知。问题是我无法模拟 NavigationError
以通过过滤条件 filter((e) => e instanceof NavigationError && e.error.name === 'ChunkLoadError')
.
但是,我无法自行创建此错误。当我创建 NavigationError 实例时,出现
错误Error: ASSERTION ERROR: NgModule 'NavigationError(id: 1, url: '1', error: 1)' is not a subtype of 'NgModuleType'. [Expected=> null != null <=Actual]
RouterTestingModule.withRoutes([
{
path: 'loadErr',
loadChildren: () =>Promise.resolve(new NavigationError(1, '1', 1)),
},
]),
如何创建此错误的实例?
您似乎不需要显式创建 NavigationError
。您可以拒绝将自动导致 NavigationError
.
现在路由设置如下所示
RouterTestingModule.withRoutes([
{
path: 'loadErr',
loadChildren: () =>
Promise.reject({name: 'ChunkLoadError'}),
},
]),
以及测试本身
ngZone
.run(() => router.navigateByUrl('loadErr'))
.then(() => done.fail('Eror expected'))
.catch(() => expect(notificationService.showError).toHaveBeenCalled());
tick(100);