我试图测试一个内部有回调的函数。我设置了一个模拟函数,但是我也需要测试回调。
我曾试图将它作为另一个模拟函数来分离,但它不算被覆盖。
我要测试的函数:
export const checkDescription = async page => {
const metaDescription = await page.$eval(
'meta[name="description"]',
description => description.getAttribute("content")
);
return metaDescription;
};
我已经嘲笑了页面函数:
const page = {
$eval: jest.fn(() => "Value")
};
我的测试:
test("Should return description", async () => {
expect(await checkDescription(page)).toBe("Value");
expect(page.$eval).toHaveBeenCalled();
});
我试着分开描述:
const description = {
getAttribute: jest.fn(() => "Value")
};
但我不认为这是在$eval中包含描述的正确方法。
2条答案
按热度按时间wlzqhblo1#
你很接近了!
description
arrow函数被传递给page.$eval
mock函数,以便使用mockFn.mock.calls
检索它。一旦检索到它,就可以直接调用它进行测试并获得完整的代码覆盖率:
xggvc2p62#
我通过回调从串行端口接收异步消息。请尝试阅读此处:https://jest-bot.github.io/jest/docs/asynchronous.html