由于'router-outlet',无法在angular2中运行测试用例

时间:2017-02-28 08:08:57

标签: angular routing routes karma-jasmine

我正在使用“ng test”运行我的测试用例。它在路由级别失败。请找截图。

enter image description here

<router-outlet></router-outlet> 

位于app.component.html

如何在app.component.spec.ts中添加路由器测试以传递测试用例?

2 个答案:

答案 0 :(得分:0)

我做了以下步骤问题修复

1)使用以下代码

在根文件夹的测试文件夹中创建router-stubs.ts
import { Directive, Input } from '@angular/core';

@Directive({
  selector: '[routerLink]',
  host: {
    '(click)': 'onClick()'
  }
})
export class RouterLinkStubDirective {
  @Input('routerLink') linkParams: any;
  navigatedTo: any = null;

  onClick() {
    this.navigatedTo = this.linkParams;
  }
}

2)将以下代码添加到app.component.spec.ts

import { NO_ERRORS_SCHEMA } from '@angular/core';
import { RouterLinkStubDirective } from '../testing/router-stubs'; 

describe('AppComponent', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [ AppComponent, RouterLinkStubDirective ],
      schemas:      [ NO_ERRORS_SCHEMA ]
    })
    .compileComponents()
    .then(() => {
      let fixture = TestBed.createComponent(AppComponent);
      let comp    = fixture.componentInstance;
      // trigger initial data binding
      fixture.detectChanges();
    });   
  });

它修正了错误&#34; router-outlet而不是已知元素&#34;

答案 1 :(得分:0)

除非我弄错了,否则你不需要为此创建自己的路由器存根。 您所要做的就是导入角度测试路由器模块而不是真实的路由器模块或根本不导入。

在TestBed.configureTestingModule

3306