使用 JS 钩子调用 TS setupGlobal 函数(在模块导入时使用,例如@app/blablabla.ts
),我得到一个错误Cannot find module '@config/config'
。我已经描述moduleNameMapper
并且它正在测试中工作,但似乎它setupGlobal
不起作用。我该如何解决?
正如我所写的,moduleNameMapper
Jest 可以理解测试中的那些(在模块中)导入。
jest.config.js
module.exports = {
roots: ['<rootDir>/src'],
transform: {
'^.+\\.tsx?$': 'ts-jest',
},
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
moduleDirectories: ['node_modules', 'src'],
moduleNameMapper: {
'@tests-suite/(.*)': '<rootDir>/src/tests/tests-suite/$1',
'@config/(.*)': '<rootDir>/config/$1',
'@tests/(.*)': '<rootDir>/src/tests/$1',
'@src/(.*)': '<rootDir>/src/$1',
},
globalSetup: "<rootDir>/src/tests/unit/jestGlobalSetup.js"
}
jestGlobalSetup.js
require("ts-node/register");
module.exports = require('./setupTestEnvironment').default;
setupTestEnvironment.ts
import { dbConnectionManager } from '@src/dbConnectionManager'
// tslint:disable-next-line:no-default-export
export default async () => {
if (process.env.NODE_ENV === 'test') {
setupTestEnvironment()
}
}
const setupTestEnvironment = async () => {
await dbConnectionManager.awaitConnection()
}
我期望“at module”导入将在setupGlobal
函数中执行,但它会引发错误。