1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Jest]@を使いたければmoduleNameMapperに設定しよう

Last updated at Posted at 2024-10-14

はじめに

最近Reactのテストに挑戦しているところで、同じような人の参考になればと思い、ちょっとずつ記事にしていきます。
間違い・認識違いあればご指摘いただけると助かります!

環境

下記のDocker開発環境にて行います。
https://qiita.com/mkthrkw/items/30115c9ac54c2204faef

きっかけ

テストのディレクトリを変更しようとした時に、importと同じようにjest.mockのmoduleNameに@(エイリアス)を使ったところ
Cannot find module '@/〇〇〇〇〇〇' from '__tests__/〇〇〇〇〇〇' のエラーとなりました。

jest.mock('../actions', () => ({
jest.mock('@/features/auth/actions', () => ({

tsconfig.jsonの設定

tsconfig には下記設定をしており "@/...""./..." にマッピングしています。

tsconfig.json
    "paths": {
      "@/*": ["./*"]
    }

テストの時も、この設定が反映されるものだと思っていましたが、Jestには反映されないようです。

jest.config.tsの追加設定

jest.config側の設定に下記を追加します。
こちらは正規表現で記載が必要です。
同じ設定をしていないと混乱するので、基本的には全く同じにしておいた方が良さそうです。

jest.config.ts
  moduleNameMapper: {
    "^@/(.*)$": "<rootDir>/$1",
  },

これでimportと同じように書いても同じマッピングがされるようになりました。

import { aaa, bbb } from "@/components/abc";

jest.mock('@/components/abc', () => ({
  aaa: jest.fn(),
  bbb: jest.fn(),
}));

あっちも../../こっちも../../みたいな地獄が頭をよぎったのですっきり!

さいごに

jest.config.tsの設定はまだまだ使えてないものがたくさんあるので少しずつ確認していこうと思います。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?