jest config - Cannot find module

21 Views Asked by At

I dont fully understand config files but having following issues when trying run jest unit test:

 Cannot find module '@/app/utils/regex' from 'src/_components/DriverSearchForm.tsx'

My jest.config

    import type { Config } from 'jest'
import nextJest from 'next/jest.js'

const createJestConfig = nextJest({
  dir: './',
})

const config: Config = {
  setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
  moduleDirectories: ['node_modules', '<rootDir>/src'],
  moduleNameMapper: {
    '^@/_components/(.*)': '<rootDir>/src/_components/$1',
  },
  testEnvironment: 'jsdom',
  preset: 'ts-jest',
  transform: {
    '^.+\\.(js|jsx|ts|tsx|mjs)$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
  },
}

export default createJestConfig(config)
1

There are 1 best solutions below

0
Lin Du On BEST ANSWER

The key is the alias of the module name, the value is the target module you want to map to. When you import from @/app/utils/regex, it will be mapped to the <rootDir>/app/utils/regex module.

<rootDir>/jest.config.js:

moduleNameMapper: {
    '^@/app/(.*)': '<rootDir>/app/$1',
}

<rootDir>/tsconfig.json:

"paths": {
  "@/app/*": [
    "app/*"
  ]
}

<rootDir>/app/utils/regex.ts:

export const regex = /test/i

index.ts:

import { regex } from '@/app/utils/regex';

console.log(regex);

index.test.ts:

import './';

describe('78224123', () => {
  test('should pass', () => {
    expect(1 + 1).toEqual(2);
  });
});

Test result:

  console.log
    /test/i

      at Object.log (stackoverflow/78224123/index.ts:3:9)

 PASS  stackoverflow/78224123/index.test.ts (7.62 s)
  78224123
    √ should pass (2 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        18.59 s