Как смоделировать Angular HttpClient после вызова в модульном тесте кармы? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть следующий код в функции query () моего компонента, и я хочу смоделировать результаты, возвращаемые постом http, как я могу это сделать?

query(){
    Observable.forkJoin(
      this.http.post<any[]>(URL, jsonBody1, postJson) .map((res) => res),
      this.http.post<any[]>(URL, jsonBody2, postJson) .map((res) => res)
    )
    .subscribe(res => this.handleResponse(res))
}

1 Ответ

0 голосов
/ 29 июня 2018

В угловом TestBed доступна насмешливая функция, которую вы можете использовать.

Убедитесь, что вы импортировали ваш HttpModule в тестовый стенд, а затем издевались над сервисом http.

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        FormsModule,
        HttpModule
      ],
      declarations: [
      ],
      providers: [
      ]
    })
      .compileComponents();
  }));

Тогда позвоните в сервис от прибора.

xxx = fixture.debugElement.injector.get(someService);

Тогда в своем тесте вы можете подсмотреть и сказать, что вы ожидаете в качестве возврата.

const error = spyOn(someService, 'someMethod').and.returnValue(
  Observable.throw({error: 'this is a error'})
);
...