我有一个fetch,它从服务器接收一个文件,并且我试图用fetch-mock来模拟我的测试的提取。
使用这段代码,我可以模拟端点并将blob放在正文中:
const blob = new Blob(['a', 'b', 'c', 'd']);
fetchMock.once('*', {body: blob}, {sendAsJson: false});正在测试的代码是:
fetch(url).then( ( response ) => {
console.log(response);
return response.blob();
} ).then( ( blob ) => {
console.log(blob);
} )我可以看到,这个块位于请求体上。
Body {
url: '/mock/url',
status: 200,
statusText: 'OK',
headers: Headers { _headers: {} },
ok: true,
body: Blob {},
bodyUsed: false,
size: 0,
timeout: 0,
_raw: [],
_abort: false }但是运行测试会引发错误:
TypeError: response.blob is not a function使用服务器运行代码将有效的Blob返回到最终的.then中。
发布于 2018-10-11 14:31:04
因此,解决方案是fetch-mock对node-fetch具有对等依赖关系,这是在jest测试期间使用的。我有一个旧版本的node-fetch被另一个库拉进来了。
因此,直接要求在我的package.json中使用最新的package.json解决了这个问题。
https://stackoverflow.com/questions/52748333
复制相似问题