如何使用 jest 模拟节点获取以允许调用进入网络?

问题描述

我在 node-fetch 中设置了 jest.setup.js,如下所示:

jest.mock('node-fetch',() => {
    const nodeFetch = jest.requireActual('node-fetch');
    const fetchMock = require('fetch-mock').sandBox();
    Object.assign(fetchMock.config,{
        fetch: nodeFetch,});
    return fetchMock;
})

如下所述:http://www.wheresrhys.co.uk/fetch-mock/#usageusage-with-jest

我正在编写一些测试,并有一个实例,仅出于在调试测试时检索一些数据的目的,我希望调用进入网络并发出真正的请求。我已经看到了 fetch-mockspy() 方法,我认为这是我想要的:http://www.wheresrhys.co.uk/fetch-mock/#api-mockingspy

但无论它如何配置,我都无法让它通过。 fetch-mock 一直抱怨它有一个不匹配的 GET,即使匹配是正确的。

为了测试这个目的,我尝试了一个简单的 spy() 到 Google,即使这样也不起作用。

//test.js
fetchMock.spy('https://www.google.ca');
.
.
.
//mycode.js
const response = await fetch('https://www.google.ca',{method: 'GET'});
const google = await response.text();

当不使用 fetch-mock 时,上面的代码返回我所期望的。

编辑:

我应该补充一点,我尝试将 fallbackToNetwork: <true/false> 添加Object.assign 调用中,但无济于事。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...