我在react函数组件中调用api。我正在编写组件的单元测试用例。我嘲弄过使用玩笑-假的。
global.fetch = require('jest-fetch-mock');
Component.ts
const Component = () => {
useEffect(() => {
return fetch(
'url',
)
.then(response => response.json())
.then(json => {
setApiResult(json);
setFilterResult(json?.videos);
})
.catch(error => {
console.error(error);
});
}, []);
}有人知道如何在jest中模拟这个组件的fetch响应吗?
发布于 2022-06-25 14:08:29
这个是直接来自jest-fetch-mock文档的
setupJest.js文件,内容如下.require('jest-fetch-mock').enableMocks()setupJest.js文件添加到jest.config.js所在的jest.config.js或package.json中。"jest": {
"automock": false,
"setupFiles": [
"./setupJest.js"
]
}现在可以在全局范围内使用fetch和fetchMock。
describe('testing Component', () => {
beforeEach(() => {
fetch.resetMocks()
})
it('testing something...', () => {
fetch.mockResponseOnce(JSON.stringify({ data: '12345' }))
const container = render (<Component/>)
// expect statement can be wrong.
expect(container.getByText(/12345/).toBeDefined())
})
});发布于 2022-06-22 16:08:58
下面是相同使用axios的小示例
jest.mock("axios");
it('mock data', async () => {
render(<Abc />);
axios.get.mockResolvedValueOnce(data); // data is your static object
// rest code goes here
});https://stackoverflow.com/questions/72718623
复制相似问题