使用 Fetch-Mock return 测试 Blob
Use Fetch-Mock to return test Blob
我有一个从服务器接收文件的抓取,我正在尝试使用 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);
} )
我可以看到 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
运行代码用服务器returns一个有效的Blob最后变成.then
.
所以解决方案是 fetch-mock
对 node-fetch
有对等依赖性,在 jest 测试期间使用。我有一个旧版本的 node-fetch
被另一个图书馆拉进来了。
所以在我的 package.json
中直接要求最新的 node-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);
} )
我可以看到 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
运行代码用服务器returns一个有效的Blob最后变成.then
.
所以解决方案是 fetch-mock
对 node-fetch
有对等依赖性,在 jest 测试期间使用。我有一个旧版本的 node-fetch
被另一个图书馆拉进来了。
所以在我的 package.json
中直接要求最新的 node-fetch
解决了这个问题。