У меня есть этот простой веб-работник, который делает некоторые опросы:
import { fetchLatestResults } from '../backend/fetchLatestResults';
let polling = false;
let symbolIds: string[] = [];
const fetchLatest = async () => {
if (!symbolIds.length) {
return;
}
try {
const results = await fetchLatestResults(symbolIds);
self.postMessage(results);
} catch (e) {
// noop for now
}
};
if (!polling) {
polling = true;
fetchLatest();
setInterval(fetchLatest, 10 * 1000);
}
self.onmessage = (e: MessageEvent) => {
symbolIds = e.data;
fetchLatest();
};
Как я могу проверить это с помощью шутки? Код не так много, бизнес-логика c извлечена, но все же есть несколько случаев, которые я хотел бы проверить, например, что fetchLatestResults
не вызывается до тех пор, пока не установлено symbolIds
, et c. ?
Возможно, я мог бы извлечь onmessage
logi c в функцию, экспортировать ее, импортировать в тестах и вызвать ее, но как насчет postMessage
?