Жасмин: Ложный родительский класс, чтобы я мог изолировать и проверить класс сына - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть следующий сценарий:

export class HttpClientService extends Http {...}    
export class AppHttpClientService extends HttpClientService {...}

Я хочу переопределить HttpClientService в фиктивном классе, чтобы я мог выполнять тесты только для функций, присутствующих в AppHttpClientService.

Как мне это сделать?

1 Ответ

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

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

, ваш макет может быть объявлен как простой класс, например:

class HttpClientServiceMock {
  get(url) {
    ...
  }
}

, а затем использовать TestBed.overrideComponent для переопределения службы, используемой вашим компонентом.

пример:

TestBed.overrideComponent(AppHttpClientService, {
  set: {
    providers: [{ provide: HttpClientService, useValue: HttpClientServiceMock}]
  }
});

Последний пример предназначен для переопределения службы.Чтобы сделать то же самое для компонента, вы можете попробовать:

TestBed.overrideComponent(ParentComponent, {
  set: {
    template: '<span>{{data}}</span>'
  }})
  .createComponent(ParentComponent);

Таким образом, вы будете использовать только ту часть, которую хотите использовать в качестве исходного родительского компонента в тесте.

Итеперь, когда вы создадите экземпляр для вашего дочернего компонента, он будет использовать эту переопределенную версию родительского компонента.

...