gpt4 book ai didi

javascript - Jest mock 获取响应 blob 的 fetch() 函数

转载 作者:行者123 更新时间:2023-12-01 00:44:56 25 4
gpt4 key购买 nike

我想通过额外的 blob 提取来模拟 fetch 函数使用 jest.fn().mockimplementation()不使用 fetch-mock 或 jest-fetch-mock

fetch(url)
.then((response) => response.blob)
.then((data) => imageHandler(data))

最佳答案

这是解决方案,我使用 jest.mock() 模拟 node-fetch 模块。

import fetch from 'node-fetch';

function fetchBlobImage() {
const url = '';
return fetch(url)
.then(response => response.blob)
.then(blob => processImage(blob));
}

function processImage(blob) {
return JSON.stringify(blob);
}

export { fetchBlobImage };

单元测试:

import { fetchBlobImage } from './';

jest.mock('node-fetch', () => {
const context = {
then: jest.fn().mockImplementationOnce(() => {
const blob = {};
const response = { blob };
return Promise.resolve(response);
})
};
return jest.fn(() => context);
});

describe('node-fetch', () => {
it('should be mock correctly', async () => {
const actualValue = await fetchBlobImage();
expect(actualValue).toBe(JSON.stringify({ blob: {} }));
});
});

测试结果:

 PASS  src/mock-module/node-fetch/index.spec.ts
node-fetch
✓ should be mock correctly (5ms)

Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 2.25s, estimated 3s

关于javascript - Jest mock 获取响应 blob 的 fetch() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com