Как сделать модули абсолютного импорта с помощью moduleDirectories в приложении CRA для JEST

Я создал несколько утилит для своих тестов. Я хотел бы импортировать свои утилиты таким образом

import CustomRender from 'my-local-utils'

Каталог будет

-src
 - components
  - __tests__
-test
  -my-loca-utils.js

Обычно я включаю тесты в файл jest.config.js в moduleDirectories, чтобы он рассматривался как глобальный. На самом деле я видел некоторые ответы StackOverflow, в которых говорилось, что с CRA его следует просто использовать в package.json -> jest. Однако кажется, что объект поддерживает только поля покрытия. См. сообщение ниже:

Out of the box, Create React App only supports overriding these Jest options:

  • clearMocks
  • collectCoverageFrom
  • coveragePathIgnorePatterns
  • coverageReporters
  • coverageThreshold
  • displayName
  • extraGlobals
  • globalSetup
  • globalTeardown
  • moduleNameMapper
  • resetMocks
  • resetModules
  • restoreMocks
  • snapshotSerializers
  • transform
  • transformIgnorePatterns
  • watchPathIgnorePatterns.

These options in your package.json Jest configuration are not currently supported by Create React App:

  • moduleDirectories

If you wish to override other Jest options, you need to eject from the default setup. You can do so by running npm run eject but remember that this is a one-way operation. You may also file an issue with Create React App to discuss supporting more options out of the box.

person Jhonatan    schedule 27.07.2020    source источник


Ответы (1)


Вы можете добиться этого, выполнив следующие действия в своем package.json:

{
  "jest": {
    "moduleNameMapper" {
      "my-local-utils": "<rootDir>/test/my-loca-utils.js"
    }
  }
}

Обратите внимание, что я сохранил то, что считаю опечаткой в ​​вашей файловой структуре.

person Jesú Castillo    schedule 30.07.2020