替换测试中的特定模块

2023-12-22

我正在使用 Jest 测试我的 React-Redux 应用程序,作为 API 调用的一部分,我正在导入一个 fetch 模块cross-fetch。我想覆盖或替换它fetch-mock。这是我的文件结构:

Action.js

import fetch from 'cross-fetch';
export const apiCall = () => {
    return fetch('http://url');

Action.test.js

import fetchMock from 'fetch-mock';
import { apiCall } from './Action';
fetchMock.get('*', { hello: 'world' });
describe('actions', () => {
    apiCall().then(
        response => {
            console.log(response)
        })
})

显然此时我还没有设置测试。因为交叉提取的导入位置更接近它使用的提取实现的函数,导致它执行实际的调用而不是我的模拟。模拟获取的最佳方法是什么(除了删除import fetch from 'cross-fetch' line)?

有没有办法根据调用的节点脚本是否进行条件导入test or build?或者将模拟的提取设置为优先?


fetch-mock无意取代fetch()调用您正在测试的代码,也不需要更改或删除任何导入。相反,它在测试期间提供模拟响应,以便使用fetch()接收已知的、可靠的答复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换测试中的特定模块 的相关文章

随机推荐