Jest-为特定测试锁定模块中的常量属性 [英] Jest - Mock a constant property from a module for a specific test
本文介绍了Jest-为特定测试锁定模块中的常量属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以,我正在尝试做一些表面上应该非常简单的事情...
我在中定义了一些常量: ` //constants.jsmodule.exports = {
MY_CONSTANT: "TEST"
}
` 我有一个我正在尝试测试的文件,其分支语句如下:
`
//file to test
//...
if(CONSTANTS.MY_CONSTANT === "TEST")
{...}
...
`
我有一个这样的测试: `
//test
it("Should do something when MY_CONSTANT === "TEST, () => {
//This is fine as it is exported as TEST
})
it("Should do something else when MY_CONSTANT !== "TEST, () => {
//This seems annoyingly difficult to get working...
})
`
I've tried this -如果运气不好,它不会改变实际值
我已尝试将常量导出改为导出对象(不起作用)
我尝试添加jest.mock(..)对于我的测试文件中的常量并在测试中执行unmock,我不希望它们被模仿。
我尝试添加了jest.doMock(...)在测试函数中,我需要更改该值。(以及jest.ResetModules和另一个必需的)
我尝试添加了jest.doMock(...)到每个测试之前(以及jest.Reset模块和另一个Required)
我真的不知所措……从字面上讲,我想做的就是在测试运行😂之前更改属性值
更新 所以我做了一些建议:
我现在在Constant文件夹旁边有一个模拟文件夹 它包含一个与实际常量文件同名的文件和一个自定义导出
然后我已在测试中添加了jest.mock("../constants);
。
然后我还在测试中添加了const funcImTesting = require("../../file").testFunction
。
仍然,常量保持不变,测试失败
推荐答案
仅模拟一次测试:
jest.mock('./constants.js', () => ({
MY_CONSTANT: 'something fake'
}));
https://jestjs.io/docs/en/manual-mocks
为每个测试提供模拟:
- 创建要模拟的模块的
__mocks__
目录 - 提供实现
- 在测试中调用
jest.mock('./moduleName')
https://jestjs.io/docs/en/manual-mocks#mocking-user-modules
这篇关于Jest-为特定测试锁定模块中的常量属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文