如何设置 jest 来测试画布

Dmi*_*iui 5 javascript testing dom canvas jestjs

无法使用画布运行玩笑测试。我有与画布、上下文、dom 等一起使用的函数。如何为此正确设置 jest?

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

包.json

"devDependencies": {
    ***
    "jest": "^24.8.0",
    "jsdom": "^15.1.1",
    ***
  },
  "dependencies": {
    ***
  },
  "jest": {
    "setupFiles": [
      "jest-canvas-mock"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

开玩笑的配置文件

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

Run Code Online (Sandbox Code Playgroud)

控制台日志:

 TypeError: Cannot set property 'imageSmoothingEnabled' of null

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

hur*_*ane 6

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

npm install --dev jest-canvas-mock
Run Code Online (Sandbox Code Playgroud)

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

import 'jest-canvas-mock'
Run Code Online (Sandbox Code Playgroud)

  • 是的,那里有很多细节,但对于新手来说,没有简单的“入门”信息......最后,我去了他们的测试 https://github.com/hustcc/jest-canvas- mock/blob/master/__tests__/classes/CanvasRenderingContext2D.scale.js 并根据此确定我需要做什么。 (3认同)