当前位置: 首页 > 面试题库 >

用Jest测试process.env

鄂和璧
2023-03-14
问题内容

我有一个取决于环境变量的应用程序,例如:

const APP_PORT = process.env.APP_PORT || 8080;

我想测试例如:

  • 可以通过节点env变量设置APP_PORT。
  • 或某个express应用程序正在使用以下命令设置的端口上运行process.env.APP_PORT

我如何用Jest做到这一点?我可以process.env在每次测试之前设置这些变量,还是应该以某种方式模拟它?


问题答案:

在每次测试之前重设resetModules,然后在测试内部动态导入模块很重要:

describe('environmental variables', () => {
  const OLD_ENV = process.env;

  beforeEach(() => {
    jest.resetModules() // most important - it clears the cache
    process.env = { ...OLD_ENV }; // make a copy
  });

  afterAll(() => {
    process.env = OLD_ENV; // restore old env
  });

  test('will receive process.env variables', () => {
    // set the variables
    process.env.NODE_ENV = 'dev';
    process.env.PROXY_PREFIX = '/new-prefix/';
    process.env.API_URL = 'https://new-api.com/';
    process.env.APP_PORT = '7080';
    process.env.USE_PROXY = 'false';

    const testedModule = require('../../config/env').default

    // ... actual testing
  });
});

如果您在运行Jest之前寻找一种加载env值的方法,请寻找以下答案。您应该为此使用setupFiles。



 类似资料:
  • 问题内容: 我有一个取决于环境变量的应用程序,例如: 我想测试例如: 可以通过节点env变量设置APP_PORT。 或某个应用程序正在使用以下命令设置的端口上运行 我如何用Jest做到这一点?我可以在每次测试之前设置这些变量,还是应该以某种方式模拟它? 问题答案: 在每次测试之前重设resetModules,然后在测试内部动态导入模块很重要: 如果您在运行Jest之前寻找一种加载env值的方法,请

  • 我试图理解Jests的异步测试。 我的模块有一个函数,它接受一个布尔值并返回一个值的承诺。executer函数调用 ,在超时回调中,promise根据最初提供的布尔值进行解析或拒绝。代码如下所示: 我想用Jest来测试一下。我想我需要使用Jest提供的模拟计时器,所以我的测试脚本看起来有点像这样: 无论是否调用 ,我都会得到以下错误/失败测试 你能解释一下我哪里出错了吗?我该怎么做才能通过考试,保

  • 问题内容: 首先,我遵循Flux架构。 我有一个显示秒数的指示器,例如:30秒。每显示一秒,它就会少显示一秒钟,因此29、28、27直到0。当到达0时,我清除间隔,使其不再重复。而且,我触发一个动作。派遣此操作后,我的商店会通知我。因此,发生这种情况时,我将间隔重置为30秒,依此类推。组件看起来像: 组件工作正常。现在,我想用Jest测试它。我知道我可以使用renderIntoDocument,然

  • null null 对上述重试功能执行以下测试。 总是传递一个承诺进行解析,重试函数在第一次执行时解析/li> 我以为写这些开玩笑的时候会是这样的。 因此,它失败,出现以下错误。 我认为,这将是可以管理的设置在笑话关于这个错误。但是,从根本上说,我不知道如何在Jest中测试promise递归处理。

  • 我想用Jest做一个测试。 我使用