問題
Webpack.resolve.alias
やtsconfig
のpaths
なんかでエイリアスを設定していて、そのソースをJestでテストしようとすると、Jestにそんなモジュールないよと怒られてしまいます。なので、Jestでもエイリアス設定するやり方。
設定
package.json
のjest.moduleNameMapper
を設定します。
Jest - moduleNameMapper
package.json
{
"jest": {
"moduleNameMapper": {
"^components/(.+)": "<rootDir>/src/components/$1"
}
}
}
キーが正規表現、右がエイリアス。jsのreplace
みたいな感じですね。
"components/button".replace(new RegExp("^components/(.+)"), "<rootDir>/src/components/$1")
// <rootDir>/src/components/button
<rootDir>
これは現在ディレクトリにpackage.json
があるなら現在のディレクトリないならprocess.cwd()
のパスが入ります。