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"
]
}