【发布时间】:2018-12-15 13:21:24
【问题描述】:
我想强制 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 这样的获取模拟库但无济于事。
【问题讨论】:
-
好像不行。请参阅此 github 评论 - github.com/facebook/jest/issues/1937#issuecomment-346531494
标签: mocking jestjs proxyquire node-fetch