我想强迫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 | });它怎么可能没有加载模块,我刚才加载了2行?proxyquire不是这里使用的正确模块吗?
我已经让node-fetch在我的测试中成为一个模拟,但是当我在模块中运行这个函数(它的顶部有const fetch = require('node-fetch'); )时,它将进入真正的模块,而不是假的。我试过使用像fetch-mock这样的fetch模拟库,但没有效果。
发布于 2018-07-20 21:11:16
最后我在里面放了一个模拟:
测试/__mocks_/node-提取.
'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"
]
}https://stackoverflow.com/questions/51218760
复制相似问题