首页 > 解决方案 > 如何设置 jest 以测试画布

问题描述

无法使用画布运行开玩笑测试。我有适用于画布、上下文、dom 等的功能。如何正确设置 jest?

我曾尝试使用 jest-canvas-mock,但如何正确安装呢?

包.json

"devDependencies": {
    ***
    "jest": "^24.8.0",
    "jsdom": "^15.1.1",
    ***
  },
  "dependencies": {
    ***
  },
  "jest": {
    "setupFiles": [
      "jest-canvas-mock"
    ]
  }
}

jest.config.js

module.exports = {
  roots: [
    '<rootDir>/src',
  ],
  testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$',
  moduleFileExtensions: [
    'js',
  ],
};

控制台日志:

 TypeError: Cannot set property 'imageSmoothingEnabled' of null

      15 |       const canvas = document.createElement('canvas');
      16 |       const context = canvas.getContext('2d');
    > 17 |       context.imageSmoothingEnabled = false;
         |       ^

标签: javascripttestingdomcanvasjestjs

解决方案


尝试将jest-canvas-mock库安装到 package.json 中。

npm install --dev jest-canvas-mock

然后将其导入您的测试文件。

import 'jest-canvas-mock'

推荐阅读