React 测试 Fake XMLHttpRequest

2023-12-29

我正在为某人的应用程序编写一些测试代码。我是专门为 React 编写测试的新手。

在组件内部的一个方法中,一个新的XMLHttpRequest对象被实例化,然后像这样使用:

var myModal = React.createClass({
  postRequest: function(data) {
    var json = JSON.stringify(data)
    var request = new XMLHttpRequest()

    request.open('POST', '/my/endpoint', true)
    request.setRequestHeader('Content-Type', 'application/json')
    request.send(json)
  }

  //...
}

我在用Sinon http://sinonjs.org/,他们的文档说有一个 Fake XMLHttpRequest 可用于测试 AJAX 请求。我想了解如何准确地覆盖这个new我们使用 Sinon 实例化了对象,以便测试使用它来进行 api 调用。

如果我尝试将假货分配给request多变的:

before(function () {
    request = sinon.useFakeXMLHttpRequest();
    requests = [];
    request.onCreate = function (req) { requests.push(req); };
});

当它到达组件的时候测试仍然失败new XMLHttpRequest()线。我应该像这里一样创建并导入存根对象吗?https://github.com/danvk/mocha-react/blob/jsx-stubs/BigComplicatedComponent.js https://github.com/danvk/mocha-react/blob/jsx-stubs/BigComplicatedComponent.js或者我错误地试图覆盖它。


终于让这个工作了。将其添加到顶部。我想它应该可以覆盖任何类。

var FakeXMLHTTPRequests = require('fakexmlhttprequest')
var requests   = []

XMLHttpRequest = function() {
    var r =  new FakeXMLHTTPRequests(arguments)
    requests.push(r)
    return r
}

感谢这篇文章帮助我思考这个问题。http://www.asbjornenge.com/wwc/testing_react_components.html http://www.asbjornenge.com/wwc/testing_react_components.html

如果使用 XMLHttpRequest 也可以这样:sinon 的假 XMLHttpRequest 的正确用法 https://stackoverflow.com/questions/32304150/correct-usage-of-sinons-fake-xmlhttprequest?lq=1

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

React 测试 Fake XMLHttpRequest 的相关文章

随机推荐

  • 使用 jQuery 延迟显示 ajax 加载 gif

    延迟 ajax loader gif 显示的最佳方法是什么 当我点击一个按钮时 即使花费的时间只有几百毫秒 加载器 gif 也会显示和隐藏 这会给浏览器带来一种闪烁 我想说的是 仅在完成 ajax 请求的时间超过 1000 毫秒时才显示 g
  • 为什么抽象类可以强制重写具体方法?

    我使用一个库 其中抽象类重写继承自的具体方法Object使用抽象方法 public abstract class A Override public abstract boolean equals Object obj 为了扩展这个类 我必
  • 使用 WSDL 的 ruby​​ 中的 SOAP 服务器

    我需要在 ruby 中实现一个 SOAP 服务器来进行一次调用 并提供 WSDL 我的计划是自己创建 WSDL 并在 Rails 服务器上提供它 并使用解析 xml 的端点 这是一条有效的路径吗 我查看了 但找不到关于生成 WSDL 的 r
  • 一行中进行多次搜索和替换

    如果我做类似的事情 s aaa bbb s 111 222 并且第一次搜索和替换没有找到任何匹配项 第二次搜索和替换将不会执行 有没有办法告诉 vim 即使命令 失败 也继续执行 Try s aaa bbb e s 111 222 e an
  • 在非主键关系上连接和查询 Django 模型?

    我有两个模型通过非主键的字段在逻辑上相关 是否可以查询它们 例如 select related 而不引入ForeignKey column 例如 考虑人为的模型 class LogEntry Model source name CharFi
  • 使用 iframe 下载文件在 Iphone/Ipad 中不起作用

    文件下载功能不适用于在 iPhone Ipad 适用于 Safari 和 Chrome 中使用 iframe 的 MVC Bootstrap Web 应用程序 在台式机 笔记本电脑和 Android 设备 适用于所有浏览器 中一切正常 单击
  • NoSQL:MongoDB 或 BigTable 并不总是“可用”意味着什么

    阅读内森 赫斯特的著作NoSQL 系统视觉指南 http blog nahurst com visual guide to nosql systems 他包括CAP三角形 C一致性 A可用性 P分区容差 随着 SQL Server 成为AC
  • observablelist何时产生更新变化事件?

    我在不同条件下尝试了不同的集合 但我能够收到的所有更改都是排列 添加 删除和替换更改 在什么情况下会出现更新变化 产生此类事件需要什么基类 什么存储类以及什么操作 要生成更新事件 您必须创建一个ObservableList与提取器 http
  • 通过回调绕过 hCaptcha?

    你好 我正在尝试使用 2captcha 绕过在一个名为 stake games 的网站中绕过 hCaptcha 但它似乎不起作用 我收到了绕过代码 但是当我在 grecaptcha response 和 hcaptcha response
  • 通过覆盖旧密码插入新密码

    在 yii 中我正在创建项目 验证用户输入的电子邮件后 我显示了password php 文件 该文件具有用于输入新密码的文本字段 密码 php
  • chrome:页面源和检查元素的区别?

    Chrome 15 中 查看页面源代码 中的 html 和检查元素有什么区别 看起来像2个不同的html 查看页面源页面向您显示服务器返回的确切文本 检查元素实际上向您显示了完全渲染的DOM tree https www w3schools
  • 使用 BigDecimal 限制有效数字的任何巧妙方法

    我想对 Java 进行四舍五入BigDecimal到一定数量的有效数字 不是小数位 例如至 4 位数字 12 3456 gt 12 35 123 456 gt 123 5 123456 gt 123500 等等 基本问题是如何找到的数量级B
  • iOS HealthKit 如何保存心率(bpm)值?迅速

    使用方法 HKUnit 样本类型 单位类型 单位名称 单位字符串 心率计数 时间每分钟心跳数 计数 分钟 Swift 心率 bpm 保存到 healthkit 商店 private func saveHeartRateIntoHealthS
  • 使用阻塞长同步操作会暂停 Node.js 中的所有用户吗?

    如果我有一个 SMTP 服务器 例如haraka https github com haraka Haraka 或网络服务器 如Express https github com strongloop express 使用 Node js 并
  • JavaFX LineChart 不画圆?

    该图表显示了问题 我有 JavaFX 程序来计算数据并绘制图表 但为什么点没有正确连接 我尝试了很多事情 甚至创建了两个单独的系列 但它不起作用 public void createScatterChart final NumberAxis
  • vk.com 中使用 zend_oauth 进行身份验证时出现问题

    vk com 中使用 zend oauth 进行身份验证时出现问题 信息 HTTP 请求中出现错误 无法在 TCP 连接 oauth vk com 上启用加密 确保为环境正确设置了 sslcafile 或 sslcapath 选项 请帮帮我
  • 关于跨平台项目中网络语言互操作性的问题[已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我计划使用 AngularJS 在 iOS Android 上创建一个应用程序和一个网站 但为了不必在每个应用程序上重写业务代码 我希望重用尽可
  • 检查日期范围(开始日期和结束日期)是否重叠

    function checkDateOverlap ranges res ranges 0 countRanges count ranges for i 0 i lt countRanges i r1s res start r1e res
  • 谷歌计算引擎工具 gcloud 非常慢

    我尝试下载并使用 gcloud bash 工具来管理我的帐户 但是我使用该工具执行的所有操作都非常慢 回复键入的命令需要几分钟的时间 我是否需要在路由器上打开防火墙或其他东西才能使其像预期的那样快速工作 例如 该视频中的 正在安装 行htt
  • React 测试 Fake XMLHttpRequest

    我正在为某人的应用程序编写一些测试代码 我是专门为 React 编写测试的新手 在组件内部的一个方法中 一个新的XMLHttpRequest对象被实例化 然后像这样使用 var myModal React createClass postR