我有一个简单的网络工作人员,它可以进行一些轮询:
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
呢?