Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 7:如何为延迟加载的路由器创建单元测试_Javascript_Angular_Typescript_Karma Jasmine_Lazy Loading - Fatal编程技术网

Javascript Angular 7:如何为延迟加载的路由器创建单元测试

Javascript Angular 7:如何为延迟加载的路由器创建单元测试,javascript,angular,typescript,karma-jasmine,lazy-loading,Javascript,Angular,Typescript,Karma Jasmine,Lazy Loading,我正在为仪表板组件(即延迟加载的组件)创建单元测试用例 在仪表板组件中,我正在使用routerlink: <div class="navbar-nav"> <a class="nav-item nav-link home" routerLink="/dashboard/home">Home</a> <a class="nav-item nav-link profile" routerLink="/das

我正在为仪表板组件(即延迟加载的组件)创建单元测试用例

在仪表板组件中,我正在使用routerlink:

  <div class="navbar-nav">
            <a class="nav-item nav-link home" routerLink="/dashboard/home">Home</a>
            <a class="nav-item nav-link profile" routerLink="/dashboard/profile">Profile</a>
            <a class="nav-item nav-link logout"  (click)="logout()">Logout</a>    
  </div>
我已经检查了这一点,并尝试使用相同的概念,但出现以下错误:

错误:未捕获(承诺中):错误:找不到模块“lazyModule”

我缺少了一些东西或其他方法来实现这一点


我以前没有使用RouterTestingModule,但我假设,您实际上需要让ProfileModule已知,或者在测试床设置中存根该模块,以便能够在loader.StubbedModule中使用该模块。你认为你可以在stackblitz或类似的游戏中重现这个错误吗。这会更容易提供帮助。@Erbsenkoenig如果我在测试床中使用惰性加载的模块,则会出现另一个错误:“Failed:Type DashboardComponent是两个模块声明的一部分:PrivateModule和DynamicTestModule!”我将尝试在stackblitz上添加代码。是的,如果包含模块,则需要从测试台声明中删除在该模块内声明的组件。否则,将声明相同的组件两次。好的,创建一个堆栈闪电战。我来看看。您是否测试过在文件中添加
类PrivateModule{}
,并删除了导入?我以前没有使用RouterTestingModule,但我假设,您实际上需要让ProfileModule已知,或者在您的测试床设置中存根该模块,以便能够在loader.stubbedModules中使用该模块。你认为你可以在stackblitz或类似的游戏中重现这个错误吗。这会更容易提供帮助。@Erbsenkoenig如果我在测试床中使用惰性加载的模块,则会出现另一个错误:“Failed:Type DashboardComponent是两个模块声明的一部分:PrivateModule和DynamicTestModule!”我将尝试在stackblitz上添加代码。是的,如果包含模块,则需要从测试台声明中删除在该模块内声明的组件。否则,将声明相同的组件两次。好的,创建一个堆栈闪电战。我来看看。您是否测试过在文件中添加
类PrivateModule{}
,并删除了导入?
      beforeEach(async(() => {
        TestBed.configureTestingModule({
          declarations: [DashboardComponent, LoginComponent, ErrorComponent, RegistrationComponent, HomeComponent, ProfileComponent,
            HomePageListingComponent],
          imports: [
            RouterTestingModule,
          ]
        })
          .compileComponents();
      }));

  it('should navigate to home page if clicked home navigation', fakeAsync(() => {
    const router = TestBed.get(Router);
    const location = TestBed.get(Location);

    router.initialNavigation();

    const loader = TestBed.get(NgModuleFactoryLoader);
    loader.stubbedModules = {lazyModule: PrivateModule};

    router.resetConfig([
      {path: 'dashboard', loadChildren: 'lazyModule'},
    ]);

    const profileLink = fixture.debugElement.query(By.css('.profile')).nativeElement;
    expect(profileLink.text).toEqual('Profile');
    expect(profileLink.pathname).toEqual('/dashboard/profile');
    profileLink.click();
    tick();
    fixture.detectChanges();

    expect(location.path()).toBe('/dashboard/profile');

  }));