Angular 5 - Использование HTTP-перехватчиков в качестве ложных HTTP-запросов в тестах Jasmine / Karma - PullRequest
0 голосов
/ 12 сентября 2018

В тестах сценариев использования, написанных с использованием Jasmine и Karma для компонентов, написанных с использованием Angular, можете ли вы использовать перехватчики HTTP в качестве ложных HTTP-запросов и ответов? Если да, каков пример использования перехватчиков?

1 Ответ

0 голосов
/ 12 сентября 2018

Нет необходимости использовать HTTPInterceptors, если вы хотите использовать только поддельные HTTP-запросы, вы можете просто использовать mocked Services. Допустим, у вас есть простой data.service.ts как это:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class DataService {

    constructor(private http: HttpClient) {

    }

    getData(): Observable<Data[]> {
      return this.http.get<Data[]>(url);
    }
}

Вы можете смоделировать ваш файл с именем mockData.service.ts:

import { Injectable } from '@angular/core';
import 'rxjs/add/observable/of';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class MockDataService {
// Your data goes either here or import it via an external file
data: Data[] = [
...
];
constructor() {

}

// Use the same name for the method here
getData(): Observable<Data[]> {
  return Obersvable.of(this.data);
}

В вашем тестовом файле component.spec.ts вы просто используете mocked dataservice, как это внутри TestBed.configureTestingModule:

providers: [
            {
                provide: DataService,
                useClass: MockDataService
            }
]

Просто определите все методы http, которые используются в тестируемом компоненте, и предоставьте соответствующие данные.

Надеюсь, это поможет!

...