【发布时间】:2016-12-07 20:00:10
【问题描述】:
我正在尝试测试一个 component.ts:
import { ActivatedRoute, Params } from '@angular/router';
import { Location } from '@angular/common';
...
ngOnInit(): void {
this.route.params.forEach((params: Params) => {
let id = +params['id'];
...
}
spec.ts 代码如下:
describe('MyDetailComponent', () => {
beforeEach( async(() => {
addMatchers();
TestBed.configureTestingModule({
imports: [ MaterialModule, FormsModule ],
declarations: [ MyDetailComponent ],
providers: [
...
{ provide: RequestOptions, useClass: RequestOptionsStub },
{ provide: ActivatedRoute, useClass: RouterStub },
{ provide: Location },
{ provide: XHRBackend, useClass: MockBackend },
AppSettings,
Http,
ConnectionBackend,
Jsonp
]
})
.compileComponents()
.then(createComponent);
}));
我得到了错误: 失败:未捕获(在承诺中):错误:错误:0:0 导致:无法读取未定义的属性“forEach” TypeError:无法读取未定义的属性“forEach”
如何解决这个问题?
【问题讨论】:
-
还有一个很好的建议是添加 RouterTestingModule 这也有助于解决问题:TestBed.configureTestingModule({ imports: [ ... RouterTestingModule.withRoutes([ { path: '...',组件:MyDetailComponent } ]) ],
标签: javascript angular testing utilities