Angular тест: макет HttpResponse, содержащий BLOB-объект - PullRequest
0 голосов
/ 10 апреля 2020

Я работаю над приложением Angular 9 и пишу юнит-тесты благодаря шутке. Моя служба angular вызывает Spring API, который возвращает CSV-файл для загрузки. Я хотел бы провести модульное тестирование, но я не могу издеваться над HttpResponse.

* MyService.ts *

downloadCsv(id: string) {
    return this.http.get('/api/ + id + `/csv/`,
      { responseType: 'blob' as 'json', observe: 'response' });
  }

* MyService.spe c .ts *

  it(`should call the GET API and return a csv file as result`, () => {
    // GIVEN 
    const expectedData: Blob = new Blob(['a', 'b', 'c', 'd']);

    // WHEN
    let actualData = {};
    service.downloadCsv('1').subscribe(data => {
      actualData = data;
    });

    // THEN
    backendMock.expectOne((req: HttpRequest<any>) => {
      return req.url === `/api/` + '1' + `/csv/`
        && req.method === 'GET';
    },  `GET data to ${'/api/'}`)
      .flush(expectedData);

    expect(actualData).toEqual(expectedData);
  });

Я не знаю, как создать HttpResponse, содержащий большой двоичный объект, даже когда я пытаюсь вставить новый HttpResponse в Ожидаемые данные (я не нахожу очень много примеров, и do c действительно не помогает мне: / ( документация HttpResponse ))

Ответ, который я жду, выглядит следующим образом:

HttpResponse I have to mock

кто-нибудь может мне помочь?

...