【发布时间】:2018-12-07 20:30:56
【问题描述】:
我有一个使用 Jest 进行单元测试的 TypeScript 项目,并且刚刚将 Puppeteer 添加到组合中,目的是在客户端上运行一些测试。它工作正常,除非我尝试在 page.evaluate 中使用导入的函数。
例如,我在HdpiCanvas.test.ts中有以下内容:
import { createHdpiCanvas } from "./HdpiCanvas";
test("createHdpiCanvas", async () => {
await page.setViewport({ width: 800, height: 600, deviceScaleFactor: 2 });
let size = await page.evaluate(() => {
const canvas = createHdpiCanvas(); // document.createElement('canvas');
return [canvas.width, canvas.height];
});
console.log(size); // [600, 300] for HDPI canvas and [ 300, 150 ] for a regular one
});
使用注释掉的document.createElement('canvas'),测试运行良好并记录[ 300, 150 ]。但是对于createHdpiCanvas(),page.evaluate 函数会抛出以下错误:
Error: Evaluation failed: ReferenceError: HdpiCanvas_1 is not defined
at __puppeteer_evaluation_script__:2:24
HdpiCanvas.ts内部的实际createHdpiCanvas定义如下:
export function createHdpiCanvas(width = 300, height = 150): HTMLCanvasElement {
const canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
applyHdpiOverrides(canvas);
return canvas;
}
它本身依赖于HdpiCanvas.ts中定义的其他函数,例如applyHdpiOverrides。
【问题讨论】:
标签: typescript import module jestjs puppeteer