为什么 TypeError: axios.create 不是一个函数?测试 axios GET 时

2023-12-30

我正在尝试在 React 中测试我的 axios API 函数。

在这里发现这个问题:我如何开玩笑地测试 axios https://stackoverflow.com/questions/45016033/how-do-i-test-axios-in-jest其中指出使用axios-mock-adapter

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import chatbot from './chatbot';

describe('Chatbot', () => {
    it('returns data when sendMessage is called', done => {
        var mock = new MockAdapter(axios);
        const data = { response: true };
        mock.onGet('https://us-central1-hutoma-backend.cloudfunctions.net/chat').reply(200, data);

        chatbot.sendMessage(0, 'any').then(response => {
            expect(response).toEqual(data);
            done();
        });
    });
});

真正的功能:

/**
 * Retrieve all Akamai images
 * @param  {String} akamai Akamai url
 * @return {Thenable}      Resolved: Akamai images
 */
export const callGetAkamai = () =>
  makeRequest('/akamai', 'GET')
    .catch(defaultCatch('callGetAkamai'));

My test:

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { callGetAkamai } from './api';

describe('GetAkamai', () => {
  it('returns data when callGetAkamai is called', (done) => {
    console.log('MockAdapter', MockAdapter);
    const mock = new MockAdapter(axios);
    // const mock = axios.create({
    //   baseURL: 'https://us-central1-hutoma-backend.cloudfunctions.net/chat/'
    // });

    const data = { response: true };
    mock.onGet('https://us-central1-hutoma-backend.cloudfunctions.net/chat').reply(200, data);

    callGetAkamai().then((response) => {
      expect(response).toEqual(data);
      done();
    });
  });
});

你在嘲笑吗axios已经?我自己也遇到过这个问题,在查看了所有错误的地方后,我意识到我已经在嘲笑了axios with jest.

将以下代码片段放入您的安装测试框架脚本文件 https://jestjs.io/docs/en/configuration.html#setuptestframeworkscriptfile-string:

const mockNoop = () => new Promise(() => {});

// Notice how `create` was not being mocked here...
jest.mock('axios', () => ({
  default: mockNoop,
  get: mockNoop,
  post: mockNoop,
  put: mockNoop,
  delete: mockNoop,
  patch: mockNoop
}));

虽然您可能可以同时执行这两项操作,但如果您使用的是axios-mock-adapter,您可能想要删除其他模拟(并跳过上面的代码片段)。

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

为什么 TypeError: axios.create 不是一个函数?测试 axios GET 时 的相关文章

  • Django 单元测试数据库没有被拆除?

    我编写了一些单元测试来测试我的 Django 应用程序 特别是一个测试套件中包含大量代码setUp 功能 所述代码的目的是为数据库创建测试数据 是的 我了解固定装置 并且选择在这种情况下不使用它们 当我运行单元测试套件时 运行的第一个测试通
  • 如何模拟 typeORM 的 getCustomRepository

    我想对一个在其构造函数中使用 getCustomRepository 的类进行单元测试 但我只是想不出一种简单的方法来模拟它 这是我的班级代码 import getCustomRepository from typeorm export c
  • 正确的单元测试技术

    在使用 TDD 时 我发现自己需要测试一个包含查找值的常量 最终 哈希图 请查看更新中出现这种情况的原因 见下文 private static final Map
  • 如何将 ZF2 单元/应用程序模块测试合并到单个调用中?

    我遵循将测试存储在模块中的 ZF2 约定 并且当从每个模块内运行测试时一切正常 我想做的是有一个根级别的 phpunit xml 来调用各个模块测试并将它们合并以生成代码覆盖率数据和其他指标 问题是每个单独的测试套件都是在模块化 phpun
  • 模拟 ScheduledExecutorService.scheduleWithFixedDelay(...) 返回 null

    在我的单元测试中 我注入了一个模拟实例ScheduledExecutoryService类进入我正在尝试测试的类 以便当scheduleAtFixedRate 方法被调用 它返回一个模拟的Future 但出于某种原因 它总是会回来null
  • 无法加载“IE”,它没有注册! Karma 上的错误消息

    我正在使用 karma 在多个浏览器上运行 js 测试 该测试适用于 Chrome 和 Firefox 但我无法在 IE 上激活它们 我收到以下错误消息 无法加载 IE 它没有注册 也许你错过了一些 插入 在我的配置文件上 SET CHRO
  • 如何通过 mat-dialog-close 或其他方式对 MatDialog 是否关闭进行单元测试

    我有一个简单的组件 它将显示为对话框窗口垫对话框 https material angular io components dialog overview 在该组件的模板中 一个按钮标记为垫子对话框关闭 https material ang
  • HttpContext 中需要什么才能允许 FormsAuthentication.SignOut() 执行?

    我正在尝试为我们的注销方法编写一个单元测试 除其他外 它FormsAuthentication SignOut 然而 它抛出一个System NullReferenceException 我创建了一个模拟 HttpContext 使用起订量
  • 我们可以在板条箱之间共享测试实用程序吗?

    我有 crate 0 有src lib rs如下 cfg test pub mod test utils pub struct OnlyInTests pub usize pub fn helper gt usize 999 test fn
  • 使用unittest时如何知道每次测试花费的时间?

    Unittest 仅显示运行所有测试所花费的总时间 但不单独显示每个测试所花费的时间 使用unittest时如何添加每个测试的计时 我想 目前不可能 http bugs python org issue4080 http bugs pyth
  • Protractor addMockModule 附加参数不起作用?

    这看起来非常非常简单 但我不明白为什么这个简单的代码不起作用 我正在添加一个模拟模块来在 Angular E2E 测试中模拟我的 API 后端 我正在使用量角器 1 6 0 我需要将附加参数传递给模拟模块 根据 Protractor 文档
  • 根据环境执行特定的Geb测试

    我正在 Grails 项目中执行一组规范测试 当我在本地时 我需要执行一组特定的规范 当我运行预生产环境时 我需要执行另一组规范 我当前的配置正在同时执行两个环境的所有规范 这是我想避免的 我有多个环境 已在 GebConfig 中配置 e
  • 如何仅在特定错误退出值(0 除外)上将 Jenkins 构建标记为成功?

    当我运行Execute shell构建步骤来执行脚本并且该脚本返回0 Jenkins将构建标记为SUCCESS 否则它将其标记为FAILURE这是预期的默认行为0表示没有错误 任何其他值表示有错误 有没有办法将构建标记为SUCCESS仅当返
  • 如何跨多个文件跨越 javascript 命名空间?

    我永远忽略了javascript 几年前我开始使用 jQuery 这样我就可以过得去 但随着我开始更多地进行 TDD 我昨天决定真正深入研究 javascript 之后可能还有咖啡脚本 在我的 ASP NET Web 窗体应用程序中 我有很
  • nuxt.js - 如何在服务器端为所有客户端缓存 axios 调用

    我正在使用 vue nuxt js 应用程序 我想知道是否可以为所有客户端缓存 axios webservice 调用 我必须获取一些货币参考数据 而每个客户都必须调用这些数据并没有多大意义 有人可以给我一些提示 甚至是一个例子吗 谢谢 这
  • Angular2 如何对自定义验证器指令进行单元测试?

    我为输入字段编写了一个非常简单的自定义验证器 import Directive from angular core import AbstractControl NG VALIDATORS from angular forms functi
  • 如何从 Visual Studio 以调试模式运行 NUnit?

    我最近正在为我一直在研究的一些 C 构建一个测试框架 我在工作区中设置了 NUnit 和一个新项目来测试该组件 如果我从 Nunit v2 4 加载单元测试 一切都会很好 但我已经到了在调试模式下运行并设置一些断点非常有用的地步 我已经尝试
  • WebDriver:更改事件未触发

    我有一个使用 KnockoutJS 的应用程序 我正在尝试编写一些测试表单的测试 如果您不了解 KnockoutJS 简单来说 它提供了从我的视图到我的数据模型的绑定 这意味着当我在输入字段中键入值时 我的基础对象会自动使用该输入字段值进行
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • Rspec 控制器测试,传递 JSON 参数

    我试图实现以下目标 在 RSpec 控制器测试中创建 POST json 请求 并向其传递参数 这是我的代码 it returns access token do post login email bla password bla1 for

随机推荐

  • 使用RAD清理工作空间环境的方法(基于Eclipse)

    启动 RAD7 时出现很多错误 服务器不响应类更改 有时服务器无法启动 有时 RAD 不会确认我添加到服务器的模块 这是一种越野车 我知道工作区中有元数据 是否有安全的方法来清理元数据或 RAD 其中 RAD Rational Applic
  • 检查 Elixir 中的 URL 是否有效

    我想检查给定的 URL 是否有效 最好是该 url 也能解析 首先 我将如何检查字符串有效性 即正则表达式 其次 有没有办法可以查看 URL 是否确实解析为互联网上的资源 Thanks 我不会使用正则表达式 而是使用 URI 包以文本方式验
  • 在 JSF 中使用复合组件在视图中重复组件 ID

    我在公司 继承 了一个 JSF 2 JSF 2 2 7 应用程序 并面临 java lang IllegalStateException 因为两个组件似乎具有相同的 ID 视图的结构如下 我提取了相关代码用于说明目的 它可能包含一些拼写错误
  • 仅当不通过 XCode 运行时,iOS 才会崩溃。巧合?

    我的应用程序仅在不使用 XCode 调试器运行时才会崩溃 很难跟踪 因为我无法调试 但我终于弄清楚了 这是因为对一些不属于我的对象调用了release 在我更正之前 我在这里搜索并发现了 2 个相关问题 链接如下 iOS 应用程序在设备上单
  • git 上有用于重置后的钩子吗?

    我有一些所有开发人员都必须更改的本地文件 我将文件标记为 假设未更改 但这并不能阻止它们在重置时发生更改 git 上是否有一个在 git 重置后执行的钩子 如果没有 有人对如何处理这种情况有建议吗 您可以找到以下列表Git 挂钩在这里 ht
  • 如何在 VC++ 中重新启动我自己的应用程序

    正在开发 VC 应用程序 弄清楚如何重新启动我自己的应用程序 有人可以举一些例子吗 编写一个程序 它将 等待您的应用程序终止 再次运行它 调用该程序 然后退出您的应用程序 该解决方案应用相当广泛 另外一个选择 使用特定参数调用您的应用程序
  • 使用分页集合时的 ​​Angularjs 承诺链

    我正在使用一个 REST api 它为 GET 请求提供分页响应 如下所示 count 43103 previous null next http ecoengine berkeley edu api photos page 2 resul
  • Android Studio 和 Gradle,@NotNull 参数的参数 0

    我正在尝试在 Android Studio 中使用 Gradle 制作一个应用程序 但我收到的只是以下错误消息 java lang IllegalArgumentException Argument 0 for NotNull parame
  • 将 Pandas 列表列拆分为多列

    我有一个带有一列的 Pandas DataFrame import pandas as pd df pd DataFrame teams SF NYG for in range 7 teams 0 SF NYG 1 SF NYG 2 SF
  • 多键字典,其中键顺序无关紧要

    我正在尝试创建一个以两个字符串作为键的字典 并且我希望键按任何顺序排列 myDict A B something myDict B A something else print myDict A B 我希望这段代码可以打印 其他内容 不幸的
  • 如何使用VisualVM获取每个函数花费的时间[重复]

    这个问题在这里已经有答案了 VisualVM 对我来说是一个很好但有点复杂的工具 我编写了一个具有许多功能的类 在 Eclipse 中 如何获取每个函数调用的次数以及执行过程中所花费的时间信息 其实很简单 运行您的程序 它将自动在 Visu
  • CreateFile() 返回 INVALID_HANDLE_VALUE 但 GetLastError() 为 ERROR_SUCCESS

    我正在使用打开串行端口创建文件 http msdn microsoft com en us library windows desktop aa363858 28v vs 85 29 aspx 我有一个测试用例 太复杂而无法重新分发 它始终
  • php 转 rtf,é 变为 é

    使用这个rtf类 http paggard com projects rtf generator 我看到我的特殊字符被转换 比如 becomes C3 A9 那部分可能不是问题 一旦我使用 php 标头将其放入 rtf 中 生成的字符 将被
  • 此帐户类型不允许使用访问选项。 options 参数必须为 nil。;

    我正在查看我的崩溃日志 我可以看到此崩溃 此帐户类型不允许使用访问选项 options 参数必须为零 这是我第一次遇到这样的崩溃 所以我不知道发生了什么 我对此进行了一些研究 发现这是由 Facebook SDK 引起的 但是 我不太确定它
  • 无法将类型 IEnumerable 隐式转换为 IQueryable

    模糊场景 一个人有零只 一只或多只宠物 使用 Linq to Sql 需要获得一个IQueryable给定 personID 的宠物列表 这是 ERD 中被严重破坏 屠宰 混淆的部分 Code public IQueryable
  • jquery ui 对话框停止工作 - 给出错误“无法调用未定义的方法‘mouseover’”

    我一直在我的应用程序中使用 jQuery UI 对话框 直到今天我尝试打开对话框时一切都很好 但什么也没发生 在控制台中 是 未捕获的类型错误 无法调用未定义的 鼠标悬停 方法 jquery ui js 第 162 行 and 获取数据 未
  • 设置 Doctrine2 实体属性而不检索整个关联对象

    我有一个表对象 它有 2 个外键字段 user id 和 Teacher id 为 X 表生成实体后 该实体仅包含 user 和 teacher 属性 这迫使我使用关联的对象而不是 id 因此 假设我知道我的对象的 user id 和 Te
  • 使用网页作为 C# 桌面应用程序中的 UI?

    我正在构建一个带有简单 UI 的 C 桌面应用程序 由于我熟悉 HTML CSS 并且之前有一个非常相似的应用程序基于 Web 的迭代 因此如果我可以重新使用一些现有的 HTML CSS 页面作为这个新桌面应用程序的 UI 那将是理想的选择
  • 纯函数的好处

    今天我正在阅读有关纯函数的内容 对其用法感到困惑 如果一个函数为同一组输入返回同一组值并且没有任何可观察到的副作用 则该函数被称为纯函数 e g strlen 是一个纯函数 而rand 是一种不纯的 attribute pure int f
  • 为什么 TypeError: axios.create 不是一个函数?测试 axios GET 时

    我正在尝试在 React 中测试我的 axios API 函数 在这里发现这个问题 我如何开玩笑地测试 axios https stackoverflow com questions 45016033 how do i test axios