私はRC3
を使用しています。新しいAngular2
ルータを実装しています:https://angular.io/docs/ts/latest/guide/router.htmlunit2テストにangle2サービスをどのように注入しますか? (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