【发布时间】:2019-08-03 20:38:14
【问题描述】:
所以,我正在尝试做一些表面上应该非常简单的事情......
我在以下位置定义了一些常量: ` //constants.js
module.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(..) 并在不需要模拟的测试中取消模拟。
我尝试在需要更改值的测试函数中添加 jest.doMock(...)。 (连同 jest.resetModules 和另一个要求)
我尝试在测试 beforeEach 中添加一个 jest.doMock(...)(以及 jest.resetModules 和另一个 require)
我真的很茫然...实际上我想做的就是在测试运行之前更改属性值????
更新 所以我做了一些建议:
我现在在常量文件夹旁边有一个 mocks 文件夹 它包含一个与实际常量文件同名的文件和一个自定义导出
然后我在测试中添加了jest.mock("../constants);。
然后我还在测试中添加了const funcImTesting = require("../../file").testFunction。
常数保持不变,测试失败
【问题讨论】:
标签: javascript unit-testing testing jestjs commonjs