模拟 componentDidMount 生命周期方法进行测试

2024-03-18

我有一个使用的组件axios within componentDidMount从服务器检索数据。当使用 Jest / Enzyme 对组件进行单元测试时,测试因网络错误而失败。

我该如何嘲笑componentDidMount所以这样axios调用服务器不会发生?

有问题的组件使用反应DnD http://react-dnd.github.io/react-dnd/docs-overview.html并且是一个DragDropContext.

class Board extends Component {
    componentDidMount() {
        this.load_data();
    }

    load_data = () => {
        // axios server calls here
    }
}
export default DragDropContext(HTML5Backend)(Board);

测试示例:

it('should do something', () => {
    const board = shallow(<Board />);
    // get the boardInstance because board is wrapped in Reactdnd DragDropContext
    const boardInstance = board.dive().instance();
    boardInstance.callSomeMethodToTestIt();
    expect(testSomething);
}

所以我只需要嘲笑componentDidMount or load_data这样它就不会尝试调用服务器。如果load_data方法作为道具传入,我可以简单地将该道具设置为jest.fn()。然而,这是我的顶级组件,它没有收到任何道具。


随着酶的新更新,生命周期方法默认启用。 (https://airbnb.io/enzyme/docs/guides/migration-from-2-to-3.html#lifecycle-methods https://airbnb.io/enzyme/docs/guides/migration-from-2-to-3.html#lifecycle-methods)

但是,您可以通过浅层渲染禁用它们,如下所示:

const board = shallow(<Board />, { disableLifecycleMethods: true });

docs: https://airbnb.io/enzyme/docs/api/shallow.html#shallownode-options--shallowwrapper https://airbnb.io/enzyme/docs/api/shallow.html#shallownode-options--shallowwrapper

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

模拟 componentDidMount 生命周期方法进行测试 的相关文章

  • iOS 11 浏览器图像错误

    在 iOS 11 中滚动页面时出现以下错误 在 Firefox Safari 和 Chrome 中 在 Android 设备中 不会发生该错误 这些是背景图像 我不知道这是否是导致错误的原因 图 2 显示了图像在 Android 中的用途和
  • Ext JS - 如何滚动到文本区域的底部

    这是我下面的代码 如何滚动到文本区域的底部 它一定是类似的东西 Ext getCmp output setScrollPosition Ext getCmp output getScrollHeight 这是我的文本区域代码 var myW
  • 使用 Javascript 在 Imacros 中循环

    我如何使用 javascript 循环 imm imacros 脚本 我搜索了一下 发现了这个 for i 0 i lt n i iimPlay marconame iim 但当我使用它时 我的浏览器 Firefox 18 挂起 for i
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 为什么 jQuery 点击事件会多次触发

    我这里有这个示例代码http jsfiddle net DBBUL 10 http jsfiddle net DBBUL 10 document ready function creategene click function confir
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 将 jquery-mobile 与 Webpack 结合使用

    我正在尝试使用 webpack 加载 jquery mobile 但到目前为止还没有运气 我知道 jquery mobile 依赖于 jquery ui 而 jquery ui 又依赖于 jquery 如何在 Webpack 中设置这样的场
  • 使用模态表单 ajax 超出 HTMLFormElement.toString 的最大调用堆栈大小

    我想使用模态窗口中的 ajax 请求提交表单 单击此链接可打开该模式 a class btn btn primary i class fa fa edit i Write a review a 模态窗口 div class modal fa
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • 如何从顺序键盘导航中删除 Vuetify 附加图标

    在带有 Vuetify 的 Vue js 应用程序中 我有一组用v text field并且其中有一个append icon为了切换文本可见性 如下所示
  • 如何清除WebGL中的矩形区域?

    WebGL 有一个clear清除整个表面的方法 清除表面的特定矩形的最佳方法是什么 例如 我想将一个从 50 50 开始的 100x100 像素框设置为全零 ARGB 0 0 0 0 我现在能想到的就是用一个写入零的片段着色器绘制一个四边形
  • 是否可以使用打字稿映射类型来创建接口的非函数属性类型?

    所以我正在研究 Typescript 的映射类型 是否可以创建一个接口来包装另一种类型 从而从原始类型中删除函数 例如 interface Person name string age number speak void type Data
  • React Native - 在单元测试中模拟 FormData

    我在测试我的 thunk 时遇到问题 因为我的许多 API 调用都使用 FormData 而且我似乎不知道如何在测试中模拟它 我正在使用杰斯特 我的安装文件如下所示 import isomorphic fetch Mocking the g
  • 如何在网页上实现文件上传进度条?

    当用户将文件上传到我的网络应用程序时 我想显示比动画 gif 更有意义的内容 我还有哪些可能性 编辑 我正在使用 Net 但我不介意是否有人向我展示与平台无关的版本 如果您对这一切在客户端通常如何工作感兴趣 就是这样 所有解决方案都通过 J
  • ES6 模板文字的延迟执行

    我正在玩新的ES6 模板文字 http tc39wiki calculist org es6 template strings 我首先想到的是String format对于 JavaScript 所以我开始实现一个原型 String pro
  • 替换两个引号之间的字符串

    我想转动一根绳子str hello my name is michael what s your s into hello my name is span class name michael span 我怎样才能在 JavaScript
  • React Native - 跨屏幕传递数据

    我遇到了一些麻烦react native应用程序 我不知道如何跨屏幕传递数据 我意识到还有其他类似的问题在 SO 上得到了回答 但是这些解决方案对我来说不起作用 我正在使用StackNavigator 这是我的设置App js file e
  • Restangular - _.contains() 不是一个函数

    如果您最近通过 Bower 更新了 Restangular 它将安装最新的 Lodash 新的 4 0 然而 这是一个问题 因为 Restangular Angular 现在会抛出错误 contains 不是函数 你怎么解决 解决方案非常简
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing
  • 在 javascript 中使用 xPath 解析具有默认命名空间的 XML

    我需要创建一个 XML xPath 解析器 所有解析都必须在客户端进行 使用 JavaScript 我创建了一个 javascript 来执行此操作 在默认名称空间发挥作用之前 一切看起来都正常 我根本无法查询具有默认命名空间的 XML 我

随机推荐

  • 这是什么类型的图表?可以使用 ggplot2 创建它吗?

    我有这张图表 我正在尝试复制 它有两个 X 轴和 Y 轴连续变量 并用一条线绘制这两个变量之间随时间变化的关系 我的问题有两个部分 首先 这种类型的图表叫什么 这是不寻常的 因为点之间的线是由第三个变量 年份 决定的 而不是它们在 X 轴上
  • SQL Server集成身份验证模式

    我想知道何时在 Web 应用程序的连接字符串中使用 Windows 身份验证模式 应用程序本身使用 Windows 身份验证进行授权 将使用哪个帐户登录 SQL Server 不是web应用程序池帐号吗 使用 Windows 身份验证登录
  • 突然间无法再在 IntelliJ 中运行 Kotlin 测试

    我有一个大型 Kotlin 项目 其中包含为 KotlinTest 编写的大约 2500 个单元测试 该项目是一个 Gradle 项目 我能够从 Gradle 任务运行所有测试 但通常我从编辑器运行它们 我可以通过单击 运行 图标从编辑器运
  • 运行 android 时出错:Gradle 项目同步失败。请修复您的项目并重试

    Android Studio 1 2 RC0 不断告诉我Error running android Gradle project sync failed Please fix your project and try again 我怎样才能
  • 远程 Web 应用程序调试在 ios 8 beta 中不起作用

    我正在尝试在模拟器上调试 ios 8 beta 下的 Web 应用程序 运行最新版本的 safari 版本 7 0 6 和 Xcode 但我在 safari 中只能看到 没有可检查的应用程序 有什么建议 您需要最新的 Safari 每晚版本
  • 无法在 Web 服务器上启动调试。 Web 服务器找不到所请求的资源

    我在尝试调试 ASP NET MVC 应用程序时遇到此错误 我已将应用程序设置为 使用本地 IIS Web 服务器 并选择 ASP NET 作为调试器 在不进行调试的情况下运行该网站效果很好 但是当我尝试调试时 出现以下错误 Unable
  • Python 文件操作

    我用这个 python 程序得到了一个错误 IOError Errno 0 Error from sys import argv file open test txt a print file tell not at the EOF pla
  • groupByKey(...) 中的 类在其成员中有一个 Map。 groupByKey 操作因“不可比较”问题而失败

    我有课Entreprise具有基元数据类型和另一个类上的 Map Etablissement它仅由原始数据类型组成 public class Entreprise implements Comparable
  • FnBox 示例抛出错误:盒装中没有 FnBox?

    我尝试运行FnBox示例来自官方文档 https doc rust lang org 1 27 0 std boxed trait FnBox html但它会抛出一个错误 error E0432 unresolved import std
  • Android 蓝牙 Le 扫描仪在一段时间后停止

    我正在使用活动的蓝牙 LE 扫描仪运行应用程序或服务 并在日志控制台上显示扫描结果 如果我把手机锁在桌子上不再碰 一段时间后它停止了 并且没有给我更多的扫描结果 如果我按下电源按钮并且屏幕唤醒 它会给我更多扫描结果 如果我再次锁定屏幕或等待
  • 在 macOS 上通过终端启动 Spyder 时出现 kq_init 警告

    我在 Mac 上运行 Spyder High Sierra 我有 2 个使用 Anaconda 定义的虚拟环境 对于 python 2 7 13 虚拟环境是 py27 对于 python 3 65 虚拟环境是 py36 当我转到 py36
  • 使用 dup2 时的竞争条件

    这个联机帮助页 http linux die net man 2 dup2为了dup2系统调用说 EBUSY 仅限 Linux 这可能会在执行期间由 dup2 或 dup3 返回 open 2 和 dup 的竞争条件 它谈论什么竞争条件以及
  • Chart_Series() 是否适用于对数轴?

    有没有办法产生对数 y 轴chart Series 我正在使用实验chart Series 而不是chartSeries 中的方法quantmod 因为在绘图中添加额外的线时更方便 library quantmod POWR lt getS
  • Qt:如何检测是否选择了某个小部件?

    我没有看到任何信号 槽 函数可以告诉我鼠标是否选择了某个小部件 是否可以有这样一个函数来告诉我当前的QWidget是否被选中 我如何区分 当前小部件被选择 和 其子小部件之一被选择 您可以使用以下命令检查小部件的焦点hasFocus 功能
  • C++ 中的 Bron Kerbosch 算法

    我一直在练习我的 C 算法知识 并陷入了标准 BK 实现 该算法输出了太多的派系 我似乎不明白为什么 我将图表示为邻接列表 vector lt list
  • 应用程序未与 iCloud 同步核心数据更改

    我设置了一些 NSLogs 以确保我的应用程序与 iCloud 同步更改 但我已经等了半个小时并且更改没有同步 这是我的核心数据代码 核心数据存储存储在文档目录中 因为我希望它在失去对 iCloud 的访问时能够继续工作 并且不希望它在这种
  • 英文数字的可扩展正则表达式

    我正在尝试创建一个正则表达式认出 英文数字 http en wikipedia org wiki Names of numbers in English 例如one nineteen twenty 一百二十二 等等 一直到数百万 我想要re
  • 在 Modelica (SystemModeler) 中生成白噪声

    我正在尝试将测量噪声添加到模拟中 这可以在 Simulink 等中完成 但在 Modelica 和 SystemModeler 中似乎更困难 关于如何做到这一点有什么想法吗 您可以通过外部 C 代码在 Wolfram SystemModel
  • 如何从前置摄像头录制视频?

    我们需要同时录制前置和后置摄像头的视频 在Android 2 1 SDK中 我们只有MediaRecorder VideoSource CAMERA和DEFAULT 但没有FRONT CAMERA和REAR CAMERA 那么 有没有其他方
  • 模拟 componentDidMount 生命周期方法进行测试

    我有一个使用的组件axios within componentDidMount从服务器检索数据 当使用 Jest Enzyme 对组件进行单元测试时 测试因网络错误而失败 我该如何嘲笑componentDidMount所以这样axios调用