2016-12-14 20 views
5

mam:Angular 2 testy jednostkowe: Jak zastąpić jednego dostawcę w TestBed (dla testów jednostkowych dla usługi, a nie komponentu, z zależnościami usług)?

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

Jak mogę nadpisać URLLoaderSvc z innym mock, w przypadku „to” z własnym wyjątkowy wymogu? Czy istnieje coś takiego jak TestBed.overrideProvider ... W tej chwili mam każde stwierdzenie w swoim "opisać", z własnym przedEach.

+0

Nadal szukasz odpowiedzi na to pytanie lub wymyśliłeś sposób na zrobienie tego? – vincecampanale

Odpowiedz

1

Może najlepiej będzie po prostu wykonać konfigurację, która będzie odpowiadała potrzebom różnych przypadków testowych. Zachować ją jako przykład i używać useValue zamiast useClass

let urlLoderSvc: URLLoaderSvc; 

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

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

teraz w Twoich it przypadków testowych, można po prostu skonfigurować instancję urlLoaderSvc robić co chcesz.