如何在 JEST 测试用例中检查全局获取的响应

2023-12-06

因此,我使用 jest 来测试我的节点函数,该函数调用 fetch() APi 来获取数据,现在当我为其编写测试用例时,我收到如下错误:

expect(received).resolves.toEqual()

    Matcher error: received value must be a promise

    Received has type:  function
    Received has value: [Function mockConstructor]

我的职能:

 export function dataHandler (req, res, next) {
    const url= "someURL"
    if (url ) {
        return fetch(url )
            .then((response) => response.json())
            .then((response) => {
                if (response.data) {
                    console.log(response);
                    res.redirect(somewhere`);
                } else {
                    throw Error(response.statusText);
                }
            })
            .catch((error) => {
                next(error);
            });
    } 
}

测试用例 :

 it('check if fetch returning the response', async () => {
        // Setup
        const req = jest.fn(),
            res = { redirect: jest.fn() },
            next = jest.fn();
        global.fetch = jest.fn().mockImplementation(() => {
            return new Promise((resolve) =>
                resolve({
                    json: () => {
                        return { data: "hello"};
                    }
                })
            );
        });
        await middlewares.dataHandler(req, res, next);
        //  Assert      
        expect(global.fetch).resolves.toEqual({ data: "hello" });
    });

请注意,我没有使用任何模拟 API,而且也不愿意这样做。

谁能帮我解决出了什么问题吗?


.resolves只能与Promise.

global.fetch是一个函数,所以Jest抛出错误。

如果您试图断言Promise通过调用返回global.fetch解析为一个对象json返回的函数{ data: 'hello' }那么你可以这样做:

expect((await global.fetch()).json()).toEqual({ data: 'hello' });  // Success!

...但我怀疑你真的想验证这一点response.data存在并且res.redirect被称为'somewhere'在这种情况下,你的断言应该是这样的:

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

如何在 JEST 测试用例中检查全局获取的响应 的相关文章

随机推荐

  • heroku 推送被拒绝,无法编译 Ruby 应用程序

    当我运行命令 git push f heroku 时 出现以下问题 获取存储库 完成 数物体 55 完成 增量压缩最多使用 4 个线程 压缩对象 100 30 30 完成 写入对象 100 35 35 9 26 KiB 0 字节 秒 完成
  • 数据库设计:识别外键有什么意义?

    我正在使用 MySQL Workbench 来建模我的数据库 在其中 我可以选择通过识别外键等来创建关系 这有什么意义 没有这些关系我就可以很好地运行我的查询 我的表确实有一个实际的外键列 我只是没有在 MySQL Workbench 中定
  • android 中如何检测来电掉线

    我正在编写一个应用程序 该应用程序在电话通话期间在后台运行 并在通话结束后将坐标记录到文件中 我知道 Android 电话 API 可以检测用户手动断开呼叫 纠正我 如果我错了 但我想知道服务断开是否是由于掉话造成的 有没有办法或API可以
  • 使用 SortableBindingList 的 DataGridView

    我有一个返回 IList 的函数 它是 DataGridView 的数据源 我了解到 DataGridView 不会对 IList 进行排序 我读这个 stackoverflow 问答我正在尝试实现 SortableBindingList
  • 通过将图像高度设置为容器高度来使图像适合其容器

    假设我有container a 它有一定的高度 以像素为单位 假设我在container a中有另一个container b 它是container a的80 现在假设我想将具有一定高度 以像素为单位 的图像放入容器中 b 如何使图像与co
  • 即使在 FormsAuthentication.SignOut() 之后 User.IsOnline = true

    我已在 web config 中设置 UserIsOnlineTimeWindow 2 然后我的 logout 函数已修改为 public ActionResult LogOff MembershipUser usr Membership
  • 使用D3,语义缩放可以应用于径向树吗?

    我用的是D3节点链接树 并且我在尝试对其应用语义缩放时遇到困难 我已经花了一些时间大惊小怪 试图让它发挥作用 所以我想我会在这里问 在我花更多时间之前看看它是否可能 我不确定语义缩放是否是线性的 仅此而已 编辑 工作解决方案 这是我的工作解
  • 如何使用 HttpURLConnection 在 Java 中等待 Expect 100-Continue 响应

    I am stuck使用 HttpURLConnection 向 Web 服务器发出 PUT http 请求 我有一些代码可以很好地发出 PUT 请求 并且我可以在标头中简单地包含 期望 100 继续请求属性 但是尽我所能尝试 我似乎无法让
  • Python:如果包含/不包含顺序相同,则从列表中删除子列表

    有没有办法从列表列表中删除重复的子列表 即使它们的顺序不同 那么我可以做类似 make 的事情吗 x 1 2 3 4 5 6 2 1 7 8 into x 1 2 3 4 5 6 7 8 是否有 itertools 函数或带有 for 循环
  • Swift 中优雅的“有界”方法

    我正在寻找一种更优雅的方法来为数字创建有界限制器 主要用于设置器 有很多技术可以确定一个值是否在界限内 但我没有看到任何本机函数来强制传入值符合这些界限 接受的答案here很接近 但我想限制这些值 而不是仅仅强制执行它们 这是我到目前为止所
  • 新的 GHC 功能——是我想象的吗?

    我发誓我在最近的一组 GHC 发行说明中看到了一个新功能 但现在我找不到任何参考资料 是我的错觉 还是这个功能真的存在 这是与加载不完整的模块有关 据我所知 它允许您关闭由于未定义变量而导致的编译错误 当然 在运行时 如果您尝试实际执行 这
  • 自调用函数 javascript

    我在 Firefox 和 Chrome 中编写了一个自调用函数 但它不会调用 我写了一些东西 大意是 function alert THE 自调用函数在当前浏览器中不起作用吗 我确实包含了页面上所有必要的标签和所有其他代码 自调用函数 实际
  • 如何递归地遍历 PyGtk 中的所有 Gtk 子项?

    我想获得主窗口的所有 Gtk 子对象的递归列表pygtk 我怎么做 注意这些 Python GTK 小部件名称 Python 递归和返回语句 这是一个函数 它是 PHP 函数的一个端口按名称获取后代 子 小部件 PHP GTK 社区 htt
  • Jboss 5,类加载器和多个类实例

    我的申请有问题 为了恢复这个问题 我必须将应用程序从 jboss 4 迁移到 jboss 5 在战争部署过程中 我遇到了这样的错误 java lang LinkageError loader constraint violation whe
  • 如何在 CUDA 中(有效地)打包位?

    我有一个字节数组 其中每个字节都是 0 或 1 现在我想将这些值打包成位 以便 8 个原始字节占用 1 个目标字节 原始字节 0 进入位 0 字节 1 进入位 1 ETC 到目前为止 我在内核中有以下内容 const uint16 t ti
  • pandas 数据帧计数唯一列表

    如果数据框中列的类型是int float or string 我们可以得到它的独特值columnName unique 但是 如果此列是一个列表 例如 1 2 3 我怎样才能得到unique本专栏的 我认为你可以将值转换为元组 然后uniq
  • Twitter 登录失败

    当我在我的android应用程序中使用twitter登录时 我遇到了一些问题 错误日志如下 09 05 15 38 48 492 22119 22119 sg com conversant swiftlive E Twitter Faile
  • 获取压缩文件的 mime 类型

    获取上传文件的 mime 类型非常简单 echo mime content type fileatt tmp name 但是 我还想检查压缩文件中包含的文件的 mime 类型 解压我的文件后 循环遍历 zip 中的文件以及位置 i是当前文件
  • 哪种方法性能更好:.Any() 与 .Count() > 0?

    in the System Linq命名空间 我们现在可以扩展我们的IE可枚举拥有Any and Count 扩展方法 最近有人告诉我 如果我想检查一个集合中是否包含 1 个或多个项目 我应该使用 Any 扩展方法而不是 Count gt
  • 如何在 JEST 测试用例中检查全局获取的响应

    因此 我使用 jest 来测试我的节点函数 该函数调用 fetch APi 来获取数据 现在当我为其编写测试用例时 我收到如下错误 expect received resolves toEqual Matcher error receive