В основном я пытаюсь выполнить модульное тестирование своей асинхронной функции импорта файлов с помощью Karma, но почему-то не могу заставить ее работать.
Предположим, у меня есть следующая функция для импорта файла.Пользователь нажимает кнопку, которая открывает диалог с файлами операционной системы.Затем пользователь выбирает импортируемый файл и нажимает ОК.
- Считайте файл и сохраните его в Backend
public handleTheProcess(event){
// set this.file with a selected file
this.file = <File>event.type.target.files[0];
this.sendFileToBackend(this.file);
}
public sendFileToBackend(file: File){
if(file){
// create a FormData obj since the file comes from a MultiPart file
const formData = new FormData();
formData.append( // append the file...);
// send file to the backend via a POST reqest
this.http.post(...)
.subscribe( event => { // Do some status checks..
return true;
}, (error: HttpErrorResponse) => {
return false;
});
} else {
// something unexpected happend
return false;
}
Чтобы проверить это, я попробовал это:
Модульный тест для проверки функции импорта
// basic configureTestSuite configs generated by Angular itself
// ...
//...
describe("Request should return true because we pass a valid file", () => {
fit("return false", fakeAsync(() => {
event = {};
event.target = {};
event.target.files = [];
event.target.files.push( new File(["Excel file content"], "Mock.xlsx", { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }));
const formData = new FormData();
formData.append("file", event.target.files[0], event.target.files[0].name);
// import the mocked file
const result = component.sendFileToBackend(event.target.files[0]);
httpMock.expectOne(...).flush(formData, {status: 200, statusText: "Okayo"});
tick();
expect(result).toBeTruthy();
}));
}
Чего мне не хватает?AFAIK, result
становится истинным, поскольку я передаю допустимый параметр.Но expec(result).toBeTruthy()
по какой-то причине не получается.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Любая помощь приветствуется.
Лучший, большой чувак