Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用延迟加载模块路径进行角度测试大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用RouterTesTingModule,我的测试是
it('should navigate to foo child path',fakeAsync(() => {
  let router = TESTBed.get(Router);
  let LOCATIOn = TESTBed.get(LOCATIOn);
  let fixture = TESTBed.createComponent(AppComponent);
  router.initialNavigation();
  router.navigateByUrl('/foo/child');
  tick();
  fixture.detectChanges();
  expect(LOCATIOn.path()).toBe('/foo/child');
}));

当试图测试具有延迟加载的孩子的路线时,例如

{ path: 'foo',loadChildren: 'app/foo/foo.module#FooModule'}

抛出错误“无法找到模块…”.

Error: Uncaught (in promisE): Error: CAnnot find module app/foo/foo.module#FooModule
    Error: CAnnot find module app/foo/foo.module#FooModule
        at SpyNgModuleFactoryLoader.Array.concat.SpyNgModuleFactoryLoader.load (webpack:///~/@angular/router/@angular/router/tesTing.es5.js:78:0 <- src/test.ts:92347:35) [ProxyZone]
        at RouterConfigLoader.Array.concat.RouterConfigLoader.loadModuleFactory (webpack:///~/@angular/router/@angular/router.es5.js:3417:0 <- src/test.ts:24005:129) [ProxyZone]
        at RouterConfigLoader.Array.concat.RouterConfigLoader.load (webpack:///~/@angular/router/@angular/router.es5.js:3401:25 <- src/test.ts:23989:52) [ProxyZone]
        at MergeMapSubscriber.project (webpack:///~/@angular/router/@angular/router.es5.js:1569:0 <- src/test.ts:22157:108) [ProxyZone]
        at MergeMapSubscriber.Array.concat.MergeMapSubscriber._tryNext (webpack:///~/rxjs/operator/mergeMap.js:120:0 <- src/test.ts:57460:27) [ProxyZone]
        at MergeMapSubscriber.Array.concat.MergeMapSubscriber._next (webpack:///~/rxjs/operator/mergeMap.js:110:0 <- src/test.ts:57450:18) [ProxyZone]
        at MergeMapSubscriber.Array.concat.Subscriber.next (webpack:///~/rxjs/Subscriber.js:89:0 <- src/test.ts:19369:18) [ProxyZone]
        at ScalarObservable.Array.concat.ScalarObservable._subscribe (webpack:///~/rxjs/observable/ScalarObservable.js:49:0 <- src/test.ts:56878:24) [ProxyZone]
        at ScalarObservable.Array.concat.observable._trySubscribe (webpack:///~/rxjs/Observable.js:57:0 <- src/test.ts:232:25) [ProxyZone]
        at ScalarObservable.Array.concat.observable.subscribe (webpack:///~/rxjs/Observable.js:45:0 <- src/test.ts:220:27) [ProxyZone]
        at MergeMapOperator.Array.concat.MergeMapOperator.call (webpack:///~/rxjs/operator/mergeMap.js:85:0 <- src/test.ts:57425:23) [ProxyZone]
        at Observable.Array.concat.observable.subscribe (webpack:///~/rxjs/Observable.js:42:0 <- src/test.ts:217:22) [ProxyZone]
        at MergeMapOperator.Array.concat.MergeMapOperator.call (webpack:///~/rxjs/operator/mergeMap.js:85:0 <- src/test.ts:57425:23) [ProxyZone]
        at Observable.Array.concat.observable.subscribe (webpack:///~/rxjs/Observable.js:42:0 <- src/test.ts:217:22) [ProxyZone]
        at resolvePromise (webpack:///~/zone.js/dist/zone.js:683:0 <- src/polyfills.ts:3331:17) [ProxyZone]
        at webpack:///~/zone.js/dist/zone.js:760:0 <- src/polyfills.ts:3408:17 [ProxyZone]
        at ProxyZonespec.Array.concat.ProxyZonespec.onInvokeTask (webpack:///~/zone.js/dist/proxy.js:103:0 <- src/test.ts:90529:39) [ProxyZone]
        at FakeAsyncTestZonespec.Array.concat.FakeAsyncTestZonespec.flushMicrotasks (webpack:///~/zone.js/dist/fake-async-test.js:204:0 <- src/test.ts:90058:17) [ProxyZone]
        at FakeAsyncTestZonespec.Array.concat.FakeAsyncTestZonespec.tick (webpack:///~/zone.js/dist/fake-async-test.js:187:0 <- src/test.ts:90041:18) [ProxyZone]
        at Object.tick (webpack:///~/@angular/core/@angular/core/tesTing.es5.js:389:0 <- src/test.ts:53426:29) [ProxyZone]
        at Object.advance (webpack:///src/app/test/test.module.ts:33:2 <- src/test.ts:85821:15) [ProxyZone]
        at Object.<anonymous> (webpack:///src/app/app.component.spec.ts:79:6 <- src/test.ts:85712:27) [ProxyZone]
        at Object.<anonymous> (webpack:///~/@angular/core/@angular/core/tesTing.es5.js:348:0 <- src/test.ts:53385:26) [ProxyZone]

我们如何测试这样的路线?

好的,我刚刚发现了.我应该更多地关注错误日志.我会回答自己,以防它帮助某人.

可以使用SpyNgModuleFactoryLoader设置存根模块

这有效:

it('should navigate to foo child path',fakeAsync(() => {
  let router = TESTBed.get(Router);
  let LOCATIOn = TESTBed.get(LOCATIOn);
  let fixture = TESTBed.createComponent(AppComponent);
  router.initialNavigation();

  const loader = TESTBed.get(NgModuleFactoryLoader);
  loader.stubbedModules = {lazymodule: FooModulE};

  router.resetConfig([
    {path: 'foo',loadChildren: 'lazymodule'},]);

  router.navigateByUrl('/foo/child');

  tick();
  fixture.detectChanges();

  expect(LOCATIOn.path()).toBe('/foo/child');
}));

大佬总结

以上是大佬教程为你收集整理的使用延迟加载模块路径进行角度测试全部内容,希望文章能够帮你解决使用延迟加载模块路径进行角度测试所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。