gpt4 book ai didi

javascript - Jest 模拟实现不适用于 require ('' )

转载 作者:可可西里 更新时间:2023-11-01 02:24:08 25 4
gpt4 key购买 nike

我想测试一个使用第 3 个库获取数据的 JS,所以我使用 jest mock 该实现。当我在测试中直接调用它时它正在工作。但是,在源代码中使用时它不起作用。

这是代码

//Source implementation

var reference = require('./reference');

module.exports = {
getResult: function() {
return reference.result();
}
};


//Test code

jest.dontMock('./foo');
jest.dontMock('console');

describe('descirbe', function() {
var foo = require('./foo');

it('should ', function() {
var reference = require('./reference');

reference.result.mockImplementation(function (a, b, c) {
return '123'
});

console.log(foo.getResult()); // undefined
console.log(reference.result()); // 123
});

});

最佳答案

你的需求顺序是错误的。当您在设置模拟 reference 之前需要 ./foo 时,foos reference 将根据 Jest 未定义自动模拟。

jest.dontMock('./foo');                                                                                                                                                                                                                

describe('describe', function() {
it('should ', function () {
var reference = require('./reference');
reference.result.mockImplementation(function (a, b, c) {
return '123';
});
var foo = require('./foo');

console.log('ferr', foo.getResult()); // ferr 123
});
});

关于javascript - Jest 模拟实现不适用于 require ('' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com