【问题标题】:Testing two environments with jest用 jest 测试两个环境
【发布时间】:2020-07-22 14:31:19
【问题描述】:

我想设置两个不同的环境,并能够在手表模式下运行。

|-- /server
|     |-- index.js  <-  Node
|-- /client
|     |-- index.js  <-  jsdom
|-- package.json

实际上我为每个环境运行两次 jest,为每个环境提供不同的配置文件:

$ yarn test -- --config=server.config.json
$ yarn test -- --config=client.config.json 

但这并不能让我同时运行两者。

【问题讨论】:

    标签: jestjs


    【解决方案1】:

    编辑(2018 年 1 月):

    现在可以这样做(自 Jest v20 起),该选项称为 projects。阅读有关it the docs 的更多信息。

    基本上,您可以定义一个希望在其中运行 Jest 的项目数组:

    {
      "projects": ["<rootDir>/client", "<rootDir>/server", "<rootDir>/some-glob/*"]
    }
    

    请记住,每个项目都需要有自己的配置。如果您希望自动获取配置,请将其放在jest.config.js 文件中,或者像通常在package.json 中一样。

    如果您更喜欢将配置放在其他位置(例如,在 configs/jest.js 中),则需要指向配置文件的路径(正确设置 rootDir 选项):

    {
      "projects": ["<rootDir>/client/configs/jest.js", "<rootDir>/server/configs/jest.js"]
    }
    

    原始答案:

    目前这是不可能的,但这种情况存在一个问题:https://github.com/facebook/jest/issues/1206

    欢迎加入并发表评论!

    【讨论】:

    • 我看到 Jest 20+ 可以做到这一点。您现在如何正确设置?例如,我需要不同的 jest.config.js 吗? 编辑:好的,所以我找到了一个解决方案:我这样做的一种方法是使用我原来的顶级 jest 配置,并将它放在我原来的环境的 projects 数组中,然后定义一个我的节点环境的第二个配置。这似乎适用于定义的一 (1) 个 jest.config.js 文件!
    • 太棒了!您还可以将一组路径传递给您的项目,甚至是一个 glob,其中每个项目都需要有某种配置(package.json 中的 jest.config.jsjest 条目)。
    【解决方案2】:

    您还可以使用the @jest-environment docblock 为每个文件设置测试环境:

    /**
     * @jest-environment jsdom
     */
    
    test('use jsdom in this test file', () => {
      const element = document.createElement('div');
      expect(element).not.toBeNull();
    });
    

    【讨论】:

    • 确保在进行此更改时重新启动测试运行程序。 :)
    猜你喜欢
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 2022-11-10
    • 2017-05-29
    • 2019-06-29
    • 2022-06-19
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多