如何用笑话对WebWorker代码进行单元测试?

时间:2020-04-19 11:55:45

标签: jestjs web-worker

我有一个简单的网络工作人员,它可以进行一些轮询:

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();
};

如何用笑话对它进行单元测试?没有很多代码,提取了业务逻辑,但是仍然有少数几个我要测试的情况,例如fetchLatestResults直到设置symbolIds时才被调用,等等。

我可能可以将onmessage逻辑提取到一个函数中,将其导出,在测试中将其导入,然后调用它,但是postMessage呢?

0 个答案:

没有答案