Мы пытаемся протестировать функцию, которая вызывает асинхронную функцию.Проблема в том, что эта функция возвращает обещание, и если мы проверяем значение, которое должно быть изменено в .then () или .catch (), то значение не обновляется, так как часть кода, которая его меняет, не имеетеще не произошло.
Я бы хотел, чтобы мои тесты ждали того или другого момента.
exampleFunction() {
if (this.path !== this.openFolder) {
this.myService.asyncFunction(this.openFolder)
.then((data) => {
// I do some stuff
return true;
})
.catch((data) => {
// I do some stuff
return true;
});
} else {
return false;
}
}
it('should return true', () => {
const aPath = 'SOMETHING';
component.path = aPath;
component.openFolder = aPath;
component.openBrowse();
expect(component.path).toBe(Path);
});
(Конечно, я издевался над своим сервисом и мои функции выглядели так)
async asyncFunction(newPath) {
new Promise<ServiceResult>((resolve, reject) => {
if (newPath == 'SOMETHING') {
resolve(true);
} else {
reject(false);
}
});
}
Любая помощь будет приветствоваться.