๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
TestCode

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

by DevIseo 2023. 6. 29.

์›์ธ

Error: Not implemented: HTMLCanvasElement.prototype.getContext ์˜ค๋ฅ˜๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ getContext ๋ฉ”์„œ๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ค๋ฅ˜๋Š” ๋Œ€๊ฐœ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์บ”๋ฒ„์Šค์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ ์‹ค์ œ๋กœ ์บ”๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ˜’๊ถ๊ธˆ์ฆ

context ๋ผ๋Š” ๊ฒƒ์ด react์˜ context๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€?

  • HTMLCanvasElement.prototype.getContext ๋ฉ”์„œ๋“œ์˜ "context"๋ฅผ ์˜๋ฏธ
  • HTMLCanvasElement.prototype.getContext ๋ฉ”์„œ๋“œ๋Š” HTML ์บ”๋ฒ„์Šค ์š”์†Œ์˜ ๊ทธ๋ฆฌ๊ธฐ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์„œ๋“œ
  • ์ด ๋ฉ”์„œ๋“œ๋Š” ์บ”๋ฒ„์Šค ์š”์†Œ์˜ ์ปจํ…์ŠคํŠธ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜.
  • React์˜ ์ปจํ…์ŠคํŠธ์™€๋Š” ์ง์ ‘์ ์ธ ์—ฐ๊ด€์„ฑ์ด ์—†์Œ

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. ์˜์กด์„ฑ ์ฃผ์ž…
yarn add --dev jest-canvas-mock

2. jest.config.js์— ์…‹์—… ์„ค์ • (setupFilesAfterEnv)

module.exports = {
  testURL: 'http://localhost/',
  testEnvironment: 'jsdom',
  transform: {
    '\\.[jt]sx?$': 'ts-jest',
  },
  setupFilesAfterEnv: ['jest-canvas-mock', '@babel/register'],
  moduleNameMapper: {
    '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
      '<rootDir>/.erb/mocks/fileMock.js',
    '\\.(css|less|sass|scss)$': 'identity-obj-proxy',
    electron: '<rootDir>/.erb/mocks/electronMock.js',
  },
  transformIgnorePatterns: [
    // '/node_modules/(?!(react-markdown|vfile|unist-util-stringify-position|unified|bail))',
  ],
  moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'],
  moduleDirectories: ['node_modules', 'release/app/node_modules'],
  testPathIgnorePatterns: ['release/app/dist'],
  setupFiles: ['./.erb/scripts/check-build-exists.ts', './test-setup.js'],
};

 

๊ทธ๋Ÿผ์—๋„ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด,

import 'jest-canvas-mock';

์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ํŽ˜์ด์ง€์— ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ importํ•˜๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค!

๋Œ“๊ธ€