我有一个取决于环境变量的应用程序,例如:
const APP_PORT = process.env.APP_PORT || 8080;
我想测试例如:
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。
null
我试图理解Jests的异步测试。 我的模块有一个函数,它接受一个布尔值并返回一个值的承诺。executer函数调用 ,在超时回调中,promise根据最初提供的布尔值进行解析或拒绝。代码如下所示: 我想用Jest来测试一下。我想我需要使用Jest提供的模拟计时器,所以我的测试脚本看起来有点像这样: 无论是否调用 ,我都会得到以下错误/失败测试 你能解释一下我哪里出错了吗?我该怎么做才能通过考试,保
问题内容: 首先,我遵循Flux架构。 我有一个显示秒数的指示器,例如:30秒。每显示一秒,它就会少显示一秒钟,因此29、28、27直到0。当到达0时,我清除间隔,使其不再重复。而且,我触发一个动作。派遣此操作后,我的商店会通知我。因此,发生这种情况时,我将间隔重置为30秒,依此类推。组件看起来像: 组件工作正常。现在,我想用Jest测试它。我知道我可以使用renderIntoDocument,然
null null 对上述重试功能执行以下测试。 总是传递一个承诺进行解析,重试函数在第一次执行时解析/li> 我以为写这些开玩笑的时候会是这样的。 因此,它失败,出现以下错误。 我认为,这将是可以管理的设置在笑话关于这个错误。但是,从根本上说,我不知道如何在Jest中测试promise递归处理。
我想用Jest做一个测试。 我使用