Импорт локальных файлов в файл `jest.config.js` - PullRequest
2 голосов
/ 13 января 2020

В моем файле jest.config.js мне нужно заполнить свойство globals. Для заполнения свойства globals мне требуются локальные модули, как показано ниже:

const path = require('path')
const server = require('./server/cfg')

module.exports = {
    rootDir: path.resolve(__dirname),
    moduleFileExtensions: [
        'js',
        'json',
        'vue',
        'ts'
    ],
    moduleNameMapper: {
        '^@/(.*)$': '<rootDir>/src/$1'
    },
    transform: {
        ".*\\.(vue)$": "<rootDir>/node_modules/vue-jest",
        "^.+\\.(js|jsx)?$": "<rootDir>/node_modules/babel-jest",
        "^.+\\.ts$": "<rootDir>/node_modules/ts-jest"
    },
    testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
    snapshotSerializers: [
        "jest-serializer-vue"
    ],
    setupFiles: [
      "<rootDir>/globals.js"
    ],
    testEnvironment: "jsdom",
    globals: {
        server: {
            server
        }
    }
}

При этой конфигурации я получаю следующую ошибку:

Error: Cannot find module './server/cfg'

Это моя структура папок

server/
   cfg.ts
src/
jest.config.js
webpack.config.js

Однако я могу require встроить модули узла. Я не могу понять, почему это происходит. Любые идеи о том, как я могу преодолеть это?

1 Ответ

1 голос
/ 13 января 2020

Jest инициируется node, а не ts-node, и он не может разрешить файл .ts по умолчанию.

Возможно, добавление setupFilesAfterEnv поможет вам.

jest.config.js
module.exports = {
  // ... your config
  setupFilesAfterEnv: [
    "<rootDir>/environmentWithServer.ts`
  ]
}
environmentWithServer.ts
global.server = require('./server/cfg');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...