JestのmoduleNameMapperで画像のfile mockができなくてハマった

const { pathsToModuleNameMapper } = require('ts-jest/utils');
const { compilerOptions } = require('./tsconfig.json');

module.exports = {
  moduleNameMapper: pathsToModuleNameMapper(
    compilerOptions.paths,
    { prefix: '<rootDir>/' }
  )
}

tsconfig.jsonのcompilerOptionsにpaths設定をしているので、pathsToModuleNameMapperを使ってみたいな感じで書いていた。

svgファイルをimportするコードがあったので https://jestjs.io/ja/docs/webpack を参考にfileMockさせようと思いこんな感じで書いた。

const { pathsToModuleNameMapper } = require('ts-jest/utils');
const { compilerOptions } = require('./tsconfig.json');

module.exports = {
  moduleNameMapper: pathsToModuleNameMapper(
    {
      "\\.(jpg|jpeg|png|gif|svg)$": ["./src/tests/mocks/fileMock.js"],
      ...compilerOptions.paths,
    },
    { prefix: '<rootDir>/' }
  )
}
module.exports = 'test-file-stub';

するといっこうにfileMockが効かない。。。
2時間くらい格闘したけど、結論pathsToModuleNameMapperの中にいれていたのが間違いで、外に設定すれば動いた。

const { pathsToModuleNameMapper } = require('ts-jest/utils');
const { compilerOptions } = require('./tsconfig.json');

module.exports = {
  moduleNameMapper: {
    "\\.(jpg|jpeg|png|gif|svg)$": ["<rootDir>/src/tests/mocks/fileMock.js"],
    ...pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' }),
  },
}

pathsToModuleNameMapperのソースコードを見てみるといろんなエスケープ処理が入っていて、tsconfig.jsonのcompilerOptions.paths用に作られていた。(そりゃそうだ)

pathsToModuleNameMapperにいれると↓みたいになっててそりゃ一致しないよねってことでした。

{
  '^\\\\\\.\\(jpg\\|jpeg\\|png\\|gif\\|svg\\)\\$$': '<rootDir>/./src/tests/mocks/fileMock.js',
}

承認欲求の向こう側

最近、承認欲求の向こう側にいけないかどうかをちょっと考え中。

かつてはmixi、それからFacebook、Twitter、InstagramとかたくさんのSNSが出てきてなまじっか簡単にいいねしたりされたりができるようになったもんだから、欲する者としてはいいねしてほしくなっちゃう。

ブログ書くのにも技術系のことはこっちのブログに書いたほうがいいとか、何時に投稿したほうがいいとか、どういう形式に書いたほうが読まれるかとか、もうそういうのもありふれて普通になってて差別化できない。

なんかそういうものを考えずにどんどんなんか好きなように発信して、誰も読まなくても自分の糧になればいいと思っている一方で、ただそれなら自分のメモに書けばいいよねという話で、完全に矛盾してしまっている。まぁ、うん、何かしら誰かが読んだら嬉しいくらいの気持ちがちょうどいいのかも。

まずアウトプットでもなんでも、何のためにするのか考えるときに、承認欲求が満たされる以外のなにかで言語化できるとよさそうというメモでした。おわり。

レンズ沼

SONY α6400 + SEL35F18を購入したので写真の練習中。
もう室内用にもうちょい広角で明るいレンズがほしい。