问题标签 [jest-fetch-mock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
998 浏览

typescript - 无法模拟 API 请求

在我的 TypeScript 项目中设置jest-test-mock非常困难。我想知道是否有人可以指出我正确的方向?

我有一个看起来像这样的函数:

检索数据.ts

我在fetch.test.ts中像这样测试它

我遇到的问题是这个库似乎没有接管对fetch. 将完全限定的 URL 放入我的函数将导致返回实际数据。我希望它检索data: '12345'对象。我在哪里错了?

更新:

以下模式在导入时有效,import 'cross-fetch/polyfill';但如果我使用import fetch from 'cross-fetch';它则无效。使用第一个 import 语句的问题是它错误我的 linter 说fetch没有定义。如果我在 fetch 导入之前控制台日志,它会显示正确的模拟构造函数。我尝试过使用模拟的导入顺序,但仍然存在同样的问题:

这显然是某种进口订单问题,但我不确定用 Jest 解决这个问题的正确方法。将 a 添加fetch到 eslint 中的全局对象是否是一个合适的解决方案?

0 投票
1 回答
1129 浏览

javascript - 在自定义钩子中测试 fetch.catch

我有这个自定义钩子:

如果会有无效响应,我想测试捕获错误。这样,应该会出现错误消息,这要归功于showErrorMessage(). 我有这个测试:

但是,我收到了一个错误:

超时 - 在 jest.setTimeout.Timeout 指定的 5000 毫秒超时内未调用异步回调 - 在 jest.setTimeout.Error 指定的 5000 毫秒超时内未调用异步回调

我在这里做错了什么?我认为它与 有某种关系await waitForNextUpdate();,但我真的不确定以及如何管理它。

0 投票
1 回答
7281 浏览

jestjs - jest.mock(..) 在“describe”中不起作用(TypeError:moduleName.split 不是函数)

jest.mock(..)似乎不适用于我的测试的“描述”级别。

如果我有以下情况:

然后运行“测试”(即在测试级别),工作正常。

但是,如果我运行“描述”(即描述级别或套件级别),则会收到以下错误:

如果我有这个:

然后两种方式都行不通。

我也试过这个:

它不起作用。

更新

我也试过这个,但它不起作用:

0 投票
2 回答
6834 浏览

javascript - 开玩笑期望一个内部有函数的对象

我正在编写一个 Jest 测试,其中我调用一个函数并期望返回一个对象,如下所示:

为了举例,所有这些函数现在都是示例。我现在,导出函数,然后在测试中使用它,如下所示:

我得到的错误是:

我需要模拟从存储库对象返回的对象。但是,该对象由代码中所示的命名函数组成。无论如何要模拟带有内部功能的对象吗?

0 投票
1 回答
2101 浏览

asynchronous - 开玩笑 - 如何模拟网络延迟

我正在尝试在 Jest 中模拟一个慢速网络(使用 React 测试库)。我试图设置的条件是这样的:

  1. UI 处于特定状态
  2. 异步 AJAX 请求被触发
  3. ui改变状态
  4. 异步请求完成

在我看来,这将是一个相当普遍的要求,因为使用异步编程,您必须了解在发送 AJAX 请求和完成请求之间可能发生的情况。但是,我根本找不到这方面的任何讨论或工具。

0 投票
1 回答
76 浏览

node.js - 在 nodejs (JavaScript) 装饰器上编写 junit 测试用例时如何初始化?找不到我的服装装饰师(身体上课)

在 nodejs (JavaScript) 装饰器上编写 junit 测试用例时如何初始化?找不到我的服装装饰师(身体上课)。

当我尝试执行这个 Testclass(UserController.spec.ts Node.js 我收到以下错误

import { BodyToClass } from 'src/shared/decorators/body' 找不到模块,虽然我已经导入包,所以

所以,我的问题是:

1:我们如何在编写测试用例时模拟装饰器。2:我们需要初始化或模拟“@BodyToClass()”吗?3:我在哪里做错了?

0 投票
0 回答
369 浏览

reactjs - 获取模拟错误。没有为 POST 定义回退响应

我需要开玩笑地测试一个异步函数(redux thunk)。为此,我决定使用 fetchMock。但我遇到了问题。测试成功结束,但我从 fetch 中得到一个错误

开玩笑的测试块:

获取模拟元素:

身体:

标题:

0 投票
1 回答
1017 浏览

reactjs - 开玩笑测试 - 如何处理 JsonWebToken 响应

我正在学习如何测试我的 redux thunk 操作,我的登录响应包括一个随机的 JsonWebToken。我编写了一个名为的变量expectedActions,它匹配从操作返回的所有数据,除了如何处理随机字符串 (JWT)。关于如何处理这个问题的任何想法?

-- 另外,我需要传递真实的用户信息(用户名/密码)来获得LOGIN_SUCCESS响应,否则函数会调度LOGIN_FAIL操作。这正常吗?

奖励:有什么意义fetchMock?我从另一个 StackOverflow 问题中借用了上面的代码,但我还没有理解 fetchMock 在做什么。

0 投票
1 回答
180 浏览

jestjs - 没有回调作为参数的模拟函数

我有 dh.js

在我的 dh.test.ts

在 dh.js中, checkDExistsCallback函数在满足 'if' 条件后被调用checkDCollectionExists 。当您查看 dh.test.ts 文件时,我一开始就模拟了 checkDCollectionExists 函数,但是在运行测试时它没有调用模拟函数,而是调用了实际函数。你能帮我弄清楚吗?

0 投票
1 回答
91 浏览

javascript - 如何设置此 JS 代码以进行更好的测试?

大家好,我在使用 Jest 测试以下 JS 时遇到问题。它从 waitForWorker 开始。如果响应是“工作”,那么它会再次调用 waitForWorker()。我尝试了 Jest 测试,但我不知道如何测试内部函数调用,我一直在研究并且失败了。

我的一些测试如下,因为我无法与任何人仔细检查。我不知道在测试中两次调用 await Worker.checkWorkerStatus() 是否是最好的方法,因为如果响应 data.status 为“工作”,waitForWorker 应该再次调用它