如何在 Global Jest 设置中查找别名?
How to find aliases in Global Jest setup?
我想运行一些东西在所有测试用例之前只做一次。因此,我创建了一个全局函数并在 jest 配置中指定了 globalSetup 字段:
globalSetup: path.resolve(srcPath, 'TestUtils', 'globalSetup.ts'),
但是,在 globalSetup 中,我使用了一些别名 @,Jest 抱怨找不到它们。
别名整理好后如何运行globalSetup?
我的Jest配置如下:
module.exports = {
rootDir: rootPath,
coveragePathIgnorePatterns: ['/node_modules/'],
preset: 'ts-jest',
setupFiles: [path.resolve(__dirname, 'env.testing.ts')],
setupFilesAfterEnv: [path.resolve(srcPath, 'TestUtils', 'testSetup.ts')],
globalSetup: path.resolve(srcPath, 'TestUtils', 'globalSetup.ts'),
globals: {},
testEnvironment: 'node',
moduleFileExtensions: ['js', 'ts', 'json'],
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' })
};
当我在每次测试之前 运行 testSetup 时,它 运行 可以使用别名,但是 globalSetup 不会发生这种情况.
知道我能做什么吗?
不幸的是,根据对这个问题的评论,我发现没有解决方案:
https://github.com/facebook/jest/issues/6048
总结是 globalSetup 运行 在 Jest 生态系统之外,因此它不会识别别名等。
有几种解决方法,例如,如果您的 npm 运行 测试命令是这样的:
"test": "jest --config config/jest.config.js --detectOpenHandles --forceExit"
然后你可以这样做:
"test": "node whateverBeforeJest.js && jest --config config/jest.config.js --detectOpenHandles --forceExit"
我通过在我的 globalSetup 文件的顶部包含 tsconfig-paths/register
来完成这项工作:
// myGlobalSetupFile.ts
import 'tsconfig-paths/register';
import { Thing } from './place-with-aliases';
export default async () => {
await Thing.doGlobalSetup();
}
您必须确保在您的项目中安装了 tsconfig-paths
。
我想运行一些东西在所有测试用例之前只做一次。因此,我创建了一个全局函数并在 jest 配置中指定了 globalSetup 字段:
globalSetup: path.resolve(srcPath, 'TestUtils', 'globalSetup.ts'),
但是,在 globalSetup 中,我使用了一些别名 @,Jest 抱怨找不到它们。
别名整理好后如何运行globalSetup?
我的Jest配置如下:
module.exports = {
rootDir: rootPath,
coveragePathIgnorePatterns: ['/node_modules/'],
preset: 'ts-jest',
setupFiles: [path.resolve(__dirname, 'env.testing.ts')],
setupFilesAfterEnv: [path.resolve(srcPath, 'TestUtils', 'testSetup.ts')],
globalSetup: path.resolve(srcPath, 'TestUtils', 'globalSetup.ts'),
globals: {},
testEnvironment: 'node',
moduleFileExtensions: ['js', 'ts', 'json'],
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' })
};
当我在每次测试之前 运行 testSetup 时,它 运行 可以使用别名,但是 globalSetup 不会发生这种情况.
知道我能做什么吗?
不幸的是,根据对这个问题的评论,我发现没有解决方案: https://github.com/facebook/jest/issues/6048
总结是 globalSetup 运行 在 Jest 生态系统之外,因此它不会识别别名等。
有几种解决方法,例如,如果您的 npm 运行 测试命令是这样的:
"test": "jest --config config/jest.config.js --detectOpenHandles --forceExit"
然后你可以这样做:
"test": "node whateverBeforeJest.js && jest --config config/jest.config.js --detectOpenHandles --forceExit"
我通过在我的 globalSetup 文件的顶部包含 tsconfig-paths/register
来完成这项工作:
// myGlobalSetupFile.ts
import 'tsconfig-paths/register';
import { Thing } from './place-with-aliases';
export default async () => {
await Thing.doGlobalSetup();
}
您必须确保在您的项目中安装了 tsconfig-paths
。