как проверить угловой сервис, введенный в другой сервис - PullRequest
0 голосов
/ 07 декабря 2018

Я тестирую сервис на угловых (1.6.3) Мой сервис зависит от другого сервиса.каждый раз, когда я запускаю тест ng, я не получаю никакой помощи для ServiceName или HTTpclient.услуга:

export class TraitsService {


 constructor(private gs: GenericService) {}

  getAll(callback: Function) {
    this.gs
      .callGet(`${environment.serviceURL}${environment.serviceConfigAPI.getMyTraits}?active=true`)
      .subscribe(traits => callback(this.flatten(traits)));
  }

тест:

describe('TraitsService', () => {
  let service: TraitsService;
  let gs: GenericService;

  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [TraitsService, GenericService]
    });
    service = TestBed.get(TraitsService);
    gs = TestBed.get(GenericService);
  });

  it('should be created', inject([TraitsService], (service: TraitsService) => {
    expect(service).toBeTruthy();
  }));

1 Ответ

0 голосов
/ 08 декабря 2018

Об этом подробно говорится в Официальной документации , но с самого начала это может быть немного пугающим.:)

Как указывается в документации, есть много способов проверить это.Лично я предпочитаю шпионить за первоначальным сервисом, чтобы тестировать тот, который рассматривается отдельно.Я собрал Stackblitz , чтобы вы продемонстрировали, как вы можете сделать это в вашем случае.

Из этого Stackblitz в файле .spec есть функция describe():

describe('TraitsService', () => {
    const mockReturnValue = [1, 2, 3]; // change this!
    const gsSpy = jasmine.createSpyObj('GenericService', ['callGet']);
    gsSpy.callGet.and.returnValue(of(mockReturnValue));
    let service: TraitsService;
    // let gs: GenericService;

    beforeEach(() => {
        TestBed.configureTestingModule({
            providers: [
                TraitsService, 
                { provide: GenericService, useValue: gsSpy }
            ]
        });
        service = TestBed.get(TraitsService);
        // gs = TestBed.get(GenericService);
    });

    it('should be created', inject([TraitsService], (service: TraitsService) => {
        expect(service).toBeTruthy();
    }));
});

В Stackblitz видно, что служба создается правильно.Надеюсь, это поможет.

...