Я пытаюсь извлечь 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 и request-обещания не оказали никакой помощи. Что я делаю не так?