我正在使用RC3
。我正在執行新的Angular2
路由器,如下所述:https://angular.io/docs/ts/latest/guide/router.html如何將angular2服務注入單元測試? (RC3)
一切工作正常,但我有單元測試的問題。具體而言,我無法將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
一切工作正常。
感謝。
https://github.com/angular/angular/blob/fcfddbf79cfbdca45771bb31c0a2c1f55cff5801/modules/%40angular/router/test/router.spec.ts可能有幫助 –
非常感謝,仍然在這個非常有用的thx工作 - 更多的想法歡迎: ) – danday74