Angular - методы Override / Mock get, post, put, delete из HTTP для тестирования - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь смоделировать класс Http, чтобы добавить его в службу, которую я хочу протестировать.

Обычно я создаю ложный класс, который расширяет класс, который будет переопределен.Для этого случая я сделал что-то вроде этого:

export class MockHttp extends Http {
    constructor(){super(undefined, undefined);}
    get(url: string, options?: RequestOptionsArgs): Observable<Response> {
        return new Observable((observer) => {
            observer.next(undefined);
            observer.complete();
        });
    }
}

Но intelisense из vs code дает мне следующую ошибку в методе get:

Свойство 'get' в типе 'MockAppHttpClientService' нельзя назначить одному и тому же свойству в базовом типе 'Http'.

Кто-нибудь знает, как решить эту проблему?

1 Ответ

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

Вам не нужно писать свой собственный макет, так как это не такая тривиальная задача. Angluar уже предоставляет утилиты для макетирования http-клиента для модульного тестирования. Это достаточно подробно описано в официальной документации

https://angular.io/guide/testing#testing-http-services

Короче говоря, используйте HttpClientTestingModule

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...