【发布时间】:2016-10-31 00:57:22
【问题描述】:
我正在使用RC3。我正在实施新的Angular2 路由器,如下所述:https://angular.io/docs/ts/latest/guide/router.html
一切正常,但我在单元测试中遇到问题。具体来说,我不能将Angular2 服务注入到我的单元测试中。
我的相关组件代码是:
import {Component} from '@angular/core';
import {ActivatedRoute} from '@angular/router';
@Component({
templateUrl: ...
styleUrls: ...
})
export class Route1DetailComponent {
constructor(private route:ActivatedRoute) {
console.log(route);
}
}
我的单元测试如下:
import {
expect, it, iit, xit,
describe, ddescribe, xdescribe,
beforeEach, beforeEachProviders, withProviders,
async, inject
} from '@angular/core/testing';
import {ActivatedRoute} from '@angular/router';
import {Route1DetailComponent} from './route1-detail.component';
import {TestComponentBuilder} from '@angular/compiler/testing';
describe('route1-detail.component.ts', () => {
beforeEachProviders(() => [
{provide: ActivatedRoute, useClass: ActivatedRoute}
]);
it('should instantiate component',
async(inject([TestComponentBuilder, ActivatedRoute], (tcb:TestComponentBuilder, ar: ActivatedRoute) => {
tcb.createAsync(Route1DetailComponent).then((fixture) => {
expect(fixture.componentInstance instanceof Route1DetailComponent).toBe(true, 'should create Route1DetailComponent');
console.log(ar);
});
})));
});
“应该实例化组件”单元测试失败。错误是:
无法解析“ActivatedRoute”的所有参数(?、?、?、?、?)。 确保所有参数都用 Inject 修饰或具有 有效的类型注释,并且 'ActivatedRoute' 装饰有 可注射。
我如何让它工作?
当我不注入 ActivatedRoute 时,一切正常。
谢谢。
【问题讨论】:
-
非常感谢仍在研究这个非常有用的thx - 欢迎更多想法:)
标签: angular typescript angular2-routing angular2-testing angular2-di