Я пытаюсь получить HTML-код с веб-страницы, используя класс с одним асинхронным методом. Я использую Typescript 3.4.3, запрос-обещание 4.2.4.
import * as rp from 'request-promise';
class HtmlFetcher {
public uri: string;
public html: string;
public constructor(uri: string) {
this.uri = uri;
}
public async fetch() {
await rp(this.uri).then((html) => {
this.html = html;
}).catch((error) => {
throw new Error('Unable to fetch the HTML page');
});
}
}
export { HtmlFetcher };
Я использую следующий код для тестирования своего класса с помощью Jest 24.8.0. Адрес в строке 6 используется с единственной целью тестирования, я также пробовал с другими URI.
import { HtmlFetcher } from './htmlFetcher.service';
describe('Fetch HTML', () => {
it('should fetch the HTMl at the given link', () => {
const uri = 'http://help.websiteos.com/websiteos/example_of_a_simple_html_page.htm';
const fetcher = new HtmlFetcher(uri);
fetcher.fetch();
expect(fetcher.html).toBeDefined();
});
});
Я ожидаю, что свойство html
будет содержать строку HTML, полученную по заданному адресу после вызова метода fetch (). Однако тестовый код не проходит и регистрирует, что fetcher.html
равно undefined
. Документы Typescript, Jest и запрос-обещание не помогли. Что я делаю неправильно?
fetch()
перед проверкой - person TKoL   schedule 03.06.2019.then
обещания или не ожидаете его. - person TKoL   schedule 03.06.2019