Я использую 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>"
}
Не уверен, что мне здесь не хватает.Функция загрузки файлов работает как положено, единственной проблемой является модульный тест.