![](/img/trans.png)
[英]How do I change the mock implementation of a function in a mock module in Jest
[英]How do I stub a module with Jest and Proxyquire?
我想强制将node-fetch
设置为存根,并且在使其工作时遇到了一些麻烦。 码:
const fetchMock = jest.fn();
const {
getArticle
} = require('../../sfpublish/api');
console.log('loaded api')
const A = global.proxyquire('../../sfpublish/api', {
'node-fetch': fetchMock
});
setup.js
:
global.proxyquire = require('proxyquire');
package.json
:
"jest": {
"automock": false,
"globalSetup": "./test/__config.js",
"setupFiles": [
"./test/__setup.js"
]
},
结果:
FAIL test/sfpublish/api.test.js
● Test suite failed to run
Cannot find module '../../sfpublish/api'
23 | } = require('../../sfpublish/api');
24 | console.log('loaded api')
> 25 | const A = global.proxyquire('../../sfpublish/api', {
| ^
26 | 'node-fetch': fetchMock
27 | });
如何无法加载我之前加载两行的模块? proxyquire
不是在此处使用的正确模块吗?
我在测试中已经将node-fetch
设为模拟,但是当我在模块中运行该函数时(顶部为const fetch = require('node-fetch');
),它将转到实际模块,而不是假货。 我试过使用像fetch-mock
这样的fetch嘲讽库都没有用。
我最后做了一个模拟:
测试/__mocks__/node-fetch.js
'use strict';
const nodeFetch = jest.genMockFromModule('node-fetch');
module.exports = nodeFetch;
package.json:
"jest": {
"verbose": true,
"automock": false,
"globalSetup": "./test/__config.js",
"coverageReporters": [
"text-summary",
"html"
],
"roots": [
"./test"
],
"setupFiles": [
"./test/__setup.js"
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.