Как протестировать код WebWorker с помощью jest? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть этот простой веб-работник, который делает некоторые опросы:

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?

...