由于 .getContext() 未实现,单元测试引发错误

新手上路,请多包涵

我正在使用 Jest 为使用画布元素的组件编写测试。当我运行如下所示的测试时,我不断收到错误消息。

 Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)

根据我的理解,Jest 使用 jsdom 进行测试,如果您安装 canvas 或 canvas-prebuilt 包,则 jsdom 与 canvas 兼容。

我已经尝试安装这些软件包中的每一个,但它们都没有解决错误。我认为唯一可能出错的是 jsdom 找不到 canvas 或 canvas-prebuilt 包。有谁知道修复此错误或测试 jsdom 是否找到其他包的方法?非常感谢!

原文由 lpie88 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

您可以在 玩笑设置脚本 中创建自己的函数模拟

HTMLCanvasElement.prototype.getContext = () => {
  // return whatever getContext has to return
};

原文由 Red Mercury 发布,翻译遵循 CC BY-SA 3.0 许可协议

我的团队正在使用 create-react-app 我们之前通过添加 npm 包 jest-canvas-mock 解决了这个问题。现在升级到 react-scripts 3.4.1 后,我们还必须向我们的 src/setupTests.ts 文件添加一个特定的导入:

 import 'jest-canvas-mock';

原文由 PaulMest 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题