Jest-为特定测试锁定模块中的常量属性 [英] Jest - Mock a constant property from a module for a specific test

查看:22
本文介绍了Jest-为特定测试锁定模块中的常量属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我正在尝试做一些表面上应该非常简单的事情...

我在中定义了一些常量: ` //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(..)对于我的测试文件中的常量并在测试中执行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


为每个测试提供模拟:

  1. 创建要模拟的模块的__mocks__目录
  2. 提供实现
  3. 在测试中调用jest.mock('./moduleName')

https://jestjs.io/docs/en/manual-mocks#mocking-user-modules

这篇关于Jest-为特定测试锁定模块中的常量属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆