0

typescript を使用した反応アプリケーションがあり、テスト ランナーとして Jest を使用しています。base64 文字列からイメージを作成するために Jimp を使用しようとしています。アプリの実行中は正常に動作しますが、私のテストはエラーでクラッシュします:

ENAMETOOLONG: name too long, open 'data:image/png;base64,iVBORw0KG...

このテストでは、ファイルに保存されている文字列を使用します。

const importResults = await artifactsImporter.importFromImage(artifactsSourceImagesMock[0]);

そして、画像はimportFromImage()Jimp.create() メソッドを使用して作成されます (console.log(base64Image)ブラウザに追加してコピー/貼り付けすると、画像は正しく表示されます):

jimpImage = await Jimp.create(base64Image);

私のゲストは、Jimpがbase64文字列から作成するのではなく、文字列をパスとして使用してファイルをロードしようとすることです。これが構成の問題なのか、jest、jsdom、Jimp、またはその他のライブラリのバグなのかわかりません。

私のjest.config

{
  collectCoverage: true,
  coverageDirectory: 'coverage',
  coverageReporters: ['json', 'text', 'lcov', 'clover'],
  moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node'],
  moduleNameMapper: {
    '\\.((s)?css|less|jpg|png)$': '<rootDir>/src/test/style-mock.ts',
  },
  preset: 'ts-jest',
  setupFilesAfterEnv: ['<rootDir>/src/react-app/setupTests.ts'],
  testMatch: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)'],
  testPathIgnorePatterns: ['\\\\node_modules\\\\', '/.stryker-tmp/', '/dist/'],
  transform: {
    '^.+\\.jsx?$': 'babel-jest',
  },
}

私の tsconfig.json

{
  "compilerOptions": {
    "target": "es6",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "outDir": "dist",
    "module": "esnext",
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "noEmit": true,
    "jsx": "react-jsx",
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitAny": true,
    "allowJs": true,
    "isolatedModules": true
  },
  "include": [
    "src",
    "src/index.tsx"
  ]
}
4

0 に答える 0