Я изо всех сил пытаюсь протестировать компонент Angular2, в который внедрена служба. Тестовый код ниже, но в основном:
• SearchComponent принимает FightService в конструкторе.
• Конструктор вызывает функцию flightService.getFlights (), которая запускает HTTP-запрос. FlightService.getFlights () возвращает наблюдаемое.
• Конструктор подписывается на возвращаемый наблюдаемый объект, который заполняет массив allSummaryItems.
Мой MockFlightService не используется, он в основном не может сказать, что нет поставщика для Http (который находится в конструкторе FlightService). Если я добавлю HttpModule к поставщикам в TestBed, он отключится и запустит настоящий Http-запрос.
Как я могу убедиться, что использую MockFlightService? Также будет ли это правильно проверять наблюдаемое, даже при запуске реального запроса Http я вижу, что подписанные методы не вызываются?
Спасибо
class MockFlightsService {
public getFlights = () => {
return new Observable<any>(() => { return dummyData.json(); });
};
}
describe('SearchComponent Tests', () => {
let fixture: ComponentFixture<SearchComponent>;
let component: SearchComponent;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [SearchComponent],
imports: [RouterModule],
providers: [{ provide: FlightsService, useClass: MockFlightsService }]
});
fixture = TestBed.createComponent(SearchComponent);
fixture.detectChanges();
});
it('should render list', fakeAsync(() => {
fixture.whenStable();
component = fixture.componentInstance;
console.log(component.allSummaryItems); // this is empty, shouldn't be
}));
});
Я использую Angular 2.0.1.