多次使用不同值模拟Jest模块
- 论坛
- 多次使用不同值模拟Jest模块
7 浏览
多次使用不同值模拟Jest模块
我有一个想要测试的函数,这个函数使用了一个导入的模块:
var a = require('./a'); function add(b) { return a + b; } module.exports = add;
在这个示例中,a
模块返回一个数字,但在我的真实项目中,我将其用作一个配置对象,该对象会不时手动更改。
var a = 1; module.exports = a;
对于add
函数的测试如下所示:
describe('add', () => { it('should add the mock number 1 to 2', () => { jest.setMock('./a', 1); const add = require('./add'); expect(add(2)).toBe(3); }); it('should add the mock number 2 to 2', () => { jest.setMock('./a', 2); const add = require('./add'); expect(add(2)).toBe(4); }); });
第一个测试通过,第二个测试失败,因为它继承了第一个模拟。是否有办法多次模拟a
模块?
我希望找到一种解决方案,而不是对add
函数进行重构,而是专注于多次模拟该模块(在我的真实项目中是一个配置文件)。
您可以在此处尝试代码:https://repl.it/@adyz/NocturnalBadComma