【问题标题】:When should I use setupFiles rather than setupFilesAfterEnv?什么时候应该使用 setupFiles 而不是 setupFilesAfterEnv?
【发布时间】:2020-01-17 09:28:08
【问题描述】:

我看到有两个配置选项可以在每次测试之前运行一些代码:setupFilessetupFilesAfterEnv。在我看来setupFilesAfterEnv 提供了更大的灵活性(我可以使用jestbeforeEach 等等......),所以我不明白setupFiles 在什么情况下会更有用。有人可以提供一个示例,您需要使用 setupFiles 而不是 setupFilesAfterEnv 吗?

文档:https://jestjs.io/docs/en/configuration#setupfiles-array

【问题讨论】:

    标签: jestjs


    【解决方案1】:

    我们可以从文档中看到 setupFilessetupFilesAfterEnv 之间的区别。

    最重要的区别可能是它的运行时间。

    setupFiles 将被执行

    在环境中安装测试框架之前。

    setupFilesAfterEnv 将被执行

    在环境中安装测试框架之后。

    这就是名称具有 AfterEnv 的原因。

    我实际上在我的实际项目中都使用了它们。

    在我的例子中,我使用 setupFiles 来设置 .env 值并使用 setupFilesAfterEnv 来设置类似 jest.setTimeout(70000)

    的笑话配置

    >> 就我而言>>>>>>>>>>>>>>>>>>>>>>

    jest.config.js

      setupFiles: ['<rootDir>/tests/settings/env-setup.ts'],
      setupFilesAfterEnv: ['<rootDir>/testSetupFile.js'],
    

    env-setup.ts

    import dotenv from 'dotenv';
    import path from 'path';
    
    console.log(`============ env-setup Loaded ===========`);
    dotenv.config({ path: path.resolve(process.cwd(), 'tests', 'settings', '.test.env') });
    

    testSetupFile.ts

    // Some of the `jest` tests are very slow and cause
    // timeouts on bitbucket pipeline
    console.log(`============ testSetupFile Loaded ===========`);
    jest.setTimeout(70000);
    
    

    【讨论】:

    • 感谢您的回答。您是否可以在 setupFilesAfterEnv 中设置那些 .env 值?是否必须在设置 env 之前设置?还是只是为了美观您更喜欢将它们设置在setupFiles 中?
    • 是的,我想这取决于你。但是,我认为 .env 应该(或良好)在 setupFileAfterEnv 之前设置。因为通常,.env 值是运行应用程序的最基本值。我将编辑我的帖子以显示我的 env-setup.ts 和 testSetupFile.ts
    • 啊,我明白了。这是有道理的。
    • 这个答案是有道理的,但仍然没有解决 OP 的问题 IMO。机械地,是的,一个先运行 - 但为什么一个人将代码放在一个而不是另一个?
    • 同意你@killthrush:就个人而言,我仍然只使用setupFilesAfterEnv,但我明白一些不寻常的设置在某些情况下可能需要setupFiles,如果需要设置环境变量首先。
    猜你喜欢
    • 2019-06-15
    • 2011-06-22
    • 2015-12-11
    • 2012-02-12
    • 2012-06-27
    • 2010-11-29
    • 2015-12-23
    • 1970-01-01
    相关资源
    最近更新 更多