Как выполнить юнит-тест forkJoin в Карме - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть код, который использует forkJoin, он идет по этому пути,

forkJoin(serviceRequests).subscribe((forkResults) => {
                //Do stuff with forkResults here 
});

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

Я пробовал различныетакие вещи, как следующие

spyOn(Observable, 'forkJoin').and.returnValue(of(mockedResults));

1 Ответ

0 голосов
/ 20 сентября 2019

// Сначала я предполагаю, что вы используете forkJoin внутри такой функции, как

  func() {
    forkJoin(this.getForkedStreams()).pipe(takeUntil(this.unsubscribe)).subscribe((streams: any[]) => {
      console.log(streams[0]);
      console.log(streams[1]);
      console.log(streams[2]);

      // logs the array objects provided by the streams
    });
  }
  getForkedStreams() {
    return [
      this.service.func1(),
      this.service.func2(),
      this.service.func3()
    ];
  }

// Затем в файле спецификации макет массива потока как

// Макет сервисных функций, напримерниже:

     let mockService: any;
    mockService = {
  func1: () => {
    return of({
      prop: 'xyz'
    });
  },
  func2: () => {
    return of({
      prop: 'xyz'
    });
  },
  func3: () => {
    return of({
      prop: 'xyz'
    });
  }
};

// Внедрение службы new SampleComponent (mockService as any);

   /*
Then, in the actual describe => it block, assert against the values mocked up with the variable with which it would be assigned to.
I am not doing that since it is only the mocking that you've asked and you might want to continue from there
*/
...