Тестирование загрузки файла в Angular с помощью HttpClient.Невозможно получить тело HTTP POST - PullRequest
0 голосов
/ 21 февраля 2019

Я использую HttpClient POST для загрузки файла на свой внутренний сервер.Загрузка файла работает нормально.Тем не менее, я не могу написать модульный тест для моей службы для того же.Использование HttpClientTestingModule и HttpTestingController.Ниже приведен мой код

const file = new File([''], 'file.txt');
service.postFile(file).then();

const mock = httpTestingController.expectOne(url);
expect(mock.request.method).toEqual('POST');
expect(mock.request.body) // <-- Unable to get body from the request here.

Мой сервис (тот, который загружает файл), как показано ниже

const formData: FormData = new FormData();
formData.append('data', file);

const req = new HttpRequest('POST', url, formData, {
  headers: new HttpHeaders({'Content-Type': 'multipart/form-data'}),
  reportProgress: true
});

this.httpClient
  .request(req)
  .toPromise()
  .then()
  .catch((error: HttpErrorResponse) => console.log(error));

Когда я регистрирую ложный объект запроса в консоли, я получаю следующее

{
   "url":"<url>",
   "body: {}, <-- this should be the FormData
   "reportProgress": true,
   "withCredentials": false,
   "responseType": "json",
   "method": "POST",
   "headers": { "normalizedNames": {},"lazyUpdate": null },
   "params": { "updates":null, "cloneFrom": null, "encoder":{}, "map": null},
   "urlWithParams": "<url>"
}

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

1 Ответ

0 голосов
/ 21 февраля 2019

Оказывается, мы не можем проверить FormData в консоли, и по этой причине я получил пустой объект.Благодаря этому SO Ответу мне удалось получить объект файла из тела запроса (т.е. FormData).Все, что мне нужно было сделать, это

mock.request.body.get('data') // --> This will give me the file object posted in the request
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...