正在运行业力测试时出现错误,无法读取null的属性“ extras”

时间:2019-10-07 09:51:43

标签: angular karma-runner

我制作了一个组件,并使用以下代码从路线中获取一些数据。尝试ng测试时出现错误:

  

TypeError:无法读取null的属性“ extras”

我应该在该组件的规范文件中导入哪些内容以读取“状态”?在我的规格文件中,我添加了<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script> <div id="example" style="width:1000px;"></div> ,但仍然无效;

import { RouterTestingModule } from '@angular/router/testing'

2 个答案:

答案 0 :(得分:0)

@Component({
  selector: 'app-root',
  template: `<pre>{{ state$ | async | json }}</pre>`,
})
export class AppComponent implements OnInit {
  private state$: Observable<object>;

  constructor(public router: Router) { }

  ngOnInit() {
    this.state$ =  this.router.events.pipe(
      filter(e => e instanceof NavigationStart),
      map(() => this.router.getCurrentNavigation().extras.state)
    )
  }
}

有关更多信息:Passing Data between Routes in Angular

答案 1 :(得分:0)

就我而言,我通过添加

修复了所有这些错误。
afterEach(() => {
    TestBed.resetTestingModule();
});

在我所有的* .spec.ts文件中。

我的文件如下:

beforeEach(() => {
    fixture = TestBed.createComponent(MyComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
});

it('should create', () => {
    expect(component).toBeTruthy();
});

afterEach(() => {
    TestBed.resetTestingModule();
});