如何仅使用一个Jest配置文件/设置来使用多个Jest预设?

时间:2019-07-11 08:28:55

标签: javascript node.js typescript amazon-dynamodb jestjs

我正在处理的项目已经使用Jest配置,并且测试可以正常进行。这就是当前jest.config.js文件的样子;

const ignores = [...];
const coverageIgnores = [...];

module.exports = {
  roots: ['<rootDir>/src'],
  globals: {
    'ts-jest': {
      tsConfig: 'tsconfig.json',
    },
  },
  moduleFileExtensions: ['js', 'json', 'ts'],
  testPathIgnorePatterns: [...ignores],
  coveragePathIgnorePatterns: [...ignores, ...coverageIgnores],
  testEnvironment: 'node',
  coverageThreshold: {
    global: {
      branches: 86,
      functions: 75,
      lines: 86,
      statements: 86,
    },
  },
  preset: 'ts-jest',
};

当前配置使用ts-jest预设。该项目还涉及一个DynamoDB实例,该实例应进行测试,并且在其中可以使用多个预设。当前预设ts-jest应该与@shelf/jest-dynamodb预设(https://jestjs.io/docs/en/dynamodb)结合使用。问题在于配置中的预置属性的类型为String,并且不支持数组或对象。

我已经读过类似的问题。 Is it possible to use Jest with multiple presets at the same time?,但类似的问题似乎对于如何解决此问题似乎没有确定的可行解决方案。

其他人建议一种解决方案,其中为每个预设创建一个单独的Jest配置,但这是我不想要的,将来可能会引起更多问题。

理想的是修改此单个配置文件以允许多个(此处为2个)预设,但是如何实现?

1 个答案:

答案 0 :(得分:0)

您实际上不能使用两个预设,但是由于架子/ jest-dynamodb的预设只是在jest设置中设置其他选项,您可以自己调用它们。通过添加到package.json的“笑话”部分中,我能够做到这一点:

"globalSetup": "./node_modules/@shelf/jest-dynamodb/setup.js",
"globalTeardown": "./node_modules/@shelf/jest-dynamodb/teardown.js",

这将进行与预设相同的呼叫,这意味着您可以将预设保留为ts-jest