2017-11-16 11 views
2

私は角2ユニットテストで消費しているサービスを持っています。以前にtestBed.get()を呼び出した場合、ユニットテストでサービスを注入する必要がありますか?

I実施例

)(TestBed.getと第beforeEachブロック内のサービスを呼び出す:

beforeEach(() => { 
    fixture = TestBed.createComponent(ConfigComponent); 
    component = fixture.componentInstance; 
    service = TestBed.get(ConfigService); 
    fixture.detectChanges(); 
    }); 

私は、このようなユニットテストでは、このサービスを使用する:

it('should do something', inject([ConfigService], (configService) => { 
     // code here 
})); 

ユニットテストでサービスを注入する必要がありますか?以前に呼び出された場合、またはTestBed.get()を呼び出してそれを使用する必要があるかどうか、または両方を行う必要がありますか?

答えて

3

this answerで説明したように、injectTestBed.getは類似しているため、スタイルの問題です。すべての仕様に共通するサービスの中には変数を割り当てることができますが、特定の仕様に固有のサービスはその仕様にのみ注入できます。

spec関数がローカル変数ではなくinjectに依存する場合、現在のdescribeブロックの範囲で必ずしも定義される必要はなく、再利用またはヘルパー関数への移動が可能です。

インジェクタインスタンスが最初にinject関数またはTestBed.getコールで作成されていることに注意してください。使用される方法によって結果が変更される可能性があります。

関連する問題