【问题标题】:What happens if more than one Jest configuration is used simultaneously?如果同时使用多个 Jest 配置会发生什么?
【发布时间】:2019-11-11 06:16:05
【问题描述】:

Jest's configuration 状态:

Jest 的配置可以在你的 package.json 文件中定义 项目,或通过jest.config.js 文件或通过--config <path/to/js|json> 选项。

如果在两个或更多位置定义配置设置会发生什么?不同的配置设置是合并在一起还是可以被默默地忽略?如果合并或忽略,它们是否具有明确定义或临时优先级?

【问题讨论】:

    标签: unit-testing configuration jestjs combinations


    【解决方案1】:

    我继承了多个项目,其中包含 package.json 中的“jest”对象和“jest.config.js”文件,每个项目都有其特定的配置。

    通过(表面上)玩弄覆盖率阈值(jest.config.js 的结论,而 package.json 中的 jest 对象是忽略。似乎没有任何合并发生。

    我的测试:

    #1:哪个优先?

    • package.json:覆盖率 98%
    • jest.config.js:覆盖率 99%
    • =>“未达到语句的覆盖率阈值 (99%)”
    • 答案:jest.config.js

    #2:他们合并了吗?

    • package.json:覆盖率 98%
    • jest.config.js:(缺少覆盖键)
    • => 没有覆盖警告
    • 回答:没有

    【讨论】:

      【解决方案2】:

      要回答完整问题的一个子集(这对于一组有意义的测试来说可能太复杂了,因为它需要处理很多旋钮),如果一个笑话命令行--config(或-c)提供,则忽略 package.json 笑话设置。

      更具体地说,要得出这个结论,首先我在jest/config.js 中尝试了jest -c jest/config.jssetupFilesAfterEnv

      module.exports = {
        rootDir: '../',
        setupFilesAfterEnv: ['./jest/global-setup.js'],
      }
      

      文件jest/global-setup.js 包含:

      const Enzyme = require('enzyme')
      const Adapter = require('enzyme-adapter-react-16')
      require('jest-enzyme/lib/index.js')
      
      Enzyme.configure({ adapter: new Adapter() })
      

      这里有运行enzyme 设置的预期效果。在 jest/config.js 文件中将其注释掉并将其放入 package.json 将被跳过/忽略:

      "jest": {
        "setupFilesAfterEnv": ["./jest/global-setup.js"],
      },
      

      其次,我尝试jest -c jest/config.js 使用jest fileTransformer.js 文件,并在jest/config.js 中使用以下内容:

      transform: {
        '^.+\\.js$': 'babel-jest',
        '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
        '<rootDir>/jest/file-transformer.js',
      },
      

      那么 package.json 的等效jest.transform 设置被跳过/忽略:

      "jest": {
        "transform": {
          "^.+\\.js$": "babel-jest",
          "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/jest/file-transformer.js"
        }
      },
      

      第三,将我的 npm scripts test 命令从 jest -c jest/config.js 更改为 jest 和我的 package.json 以包含以下内容,这会导致 package.json 设置按预期工作:

      "jest": {
        "setupFilesAfterEnv": ["./jest/global-setup.js"],
        "transform": {
          "^.+\\.js$": "babel-jest",
          "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
          "<rootDir>/jest/file-transformer.js"
        }
      },
      

      jest v24.9.0测试

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        相关资源
        最近更新 更多