当我运行我的单元测试时,我发现我得到以下错误:
Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)
l0oc07j21#
要解决这个问题,首先需要安装jest-canvas-mock,您可以使用yarn或npm。
yarn add -D jest-canvas-mock
然后将其添加到 * jest.config.js* 或 package.json 中的jest配置部分。
jest.config.js
package.json
setupFiles: [ 'jest-canvas-mock', '<rootDir>/config/jest/setupFiles' ]
qxgroojn2#
这个问题的ANSWER帮助我用最少的知识解决了这个问题。我写这个答案我如何使用官方文档DOC解决这个问题Package.json如下
Package.json
"scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "test:unit": "vue-cli-service test:unit --watch", "test:e2e": "vue-cli-service test:e2e", "lint": "vue-cli-service lint" },
在projects文件夹下,我有另一个名为tests的文件夹,我在其中编写end2end test和unit test。在该test文件夹上,我创建了一个名为setup.js的文件,在其中导入必要的模块,如下所示
setup.js
import Vue from "vue"; import Vuetify from "vuetify"; import axios from "axios"; import globalVariables from "../src/helper/globalVariables"; import globalFunctions from "../src/helper/globalFunctions"; Vue.use(Vuetify); Vue.config.productionTip = false; Vue.prototype.$http = axios; Vue.prototype.$gv = globalVariables; Vue.prototype.$gf = globalFunctions;
在我的项目文件夹下,我有一个名为jest.config.js的文件,我在其中设置了setup.js文件来测试单元。
module.exports = { preset: "@vue/cli-plugin-unit-jest", verbose: true, reporters: [ "default", [ "./node_modules/jest-html-reporter", { pageTitle: "VGC Unit Test", }, ], ], setupFiles: ["jest-canvas-mock", "./tests/setup.js"], };
在jest.config.js中包含下面的代码行,并定义setup.js文件的路径
setupFiles: ["jest-canvas-mock", "./tests/setup.js"]
这将解决问题Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)
ltqd579y3#
如果HTMLCanvasElement只得到一个函数错误,你可以在设置jest时简单地模拟这个函数:在上述答案中提到的安装文件中,模拟显示错误的函数:
HTMLCanvasElement.prototype.getContext = () => {};
3条答案
按热度按时间l0oc07j21#
要解决这个问题,首先需要安装jest-canvas-mock,您可以使用yarn或npm。
然后将其添加到 *
jest.config.js
* 或package.json
中的jest配置部分。qxgroojn2#
这个问题的ANSWER帮助我用最少的知识解决了这个问题。我写这个答案我如何使用官方文档DOC解决这个问题
Package.json
如下在projects文件夹下,我有另一个名为tests的文件夹,我在其中编写end2end test和unit test。在该test文件夹上,我创建了一个名为
setup.js
的文件,在其中导入必要的模块,如下所示在我的项目文件夹下,我有一个名为
jest.config.js
的文件,我在其中设置了setup.js
文件来测试单元。在
jest.config.js
中包含下面的代码行,并定义setup.js
文件的路径这将解决问题
Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)
ltqd579y3#
如果HTMLCanvasElement只得到一个函数错误,你可以在设置jest时简单地模拟这个函数:
在上述答案中提到的安装文件中,模拟显示错误的函数: