2016-12-14 8 views
5

私が持っている:角2単位テスト:TestBedで単一のプロバイダをオーバーライドする方法(コンポーネントではなくサービスの単体テストの場合)

beforeEach(() => { 
     TestBed.configureTestingModule({ 
      providers: [ 
       DocumentsLoaderSvc, 
       { provide: MgrSvc, useClass: MockMgrSvc }, 
       { provide: URLLoaderSvc, useClass: MockURLLoaderSvcWhenData} 
      ] 
     }); 
    }); 

はどのようにして独自の要件に「それ」の場合には、別のモックとURLLoaderSvcを上書きしますか? TestBed.overrideProviderのようなものがありますか...今、私はそれ自身の "記述"の中に独自のbeforeEachを持つステートメントをそれぞれ持っています。

+0

あなたはまだこの質問への回答を探しているのですか、これを行う方法を見つけましたか? – vincecampanale

答えて

1

おそらく、最良の方法は、模擬テストをさまざまなテストケースのニーズに合わせて構成できるようにすることです。インスタンスとして、それを維持し、今すぐあなたのitテストケースでは、あなたはちょうどあなたがやりたいためにurlLoaderSvcインスタンスを設定することができます代わりにuseClass

let urlLoderSvc: URLLoaderSvc; 

beforeEach(() => { 
    urlLoaderSvc = new URLLoaderSvc(); 

    TestBed.configureTestingModule({ 
    providers: [ 
     DocumentsLoaderSvc, 
     { provide: MgrSvc, useClass: MockMgrSvc }, 
     { provide: URLLoaderSvc, useValue: urlLoaderSvc } 
    ] 
    }); 
}); 

useValueを使用しています。

関連する問題