如何使用 Jest 和 vue/test-utils 测试输入文件

2024-03-31

我想使用 Jest 和 vue/test-utils 测试文件上传器组件。

我有这个:

 describe('show progress bar of uploading file', () => {
    const wrapper = mount(FileUploaderComponent)

    // create csv file
    let csv = new Blob([''], { type: 'text/csv;charset=utf-8;' })
    csv.name = 'myFile.csv'

    let input = wrapper.find('input')
    input.element.value = csv // || csv.error value, Error here
    input.trigger('change')

    // Update current status
  })

在文件上传器组件中我有:

<template>
  <form action="POST" enctype="multipart/form-data">
    <label class="btn btn-primary" for="input-file">
      <input class="input-file" id="input-file" name="file" type="file" accept=".xlsx, .xls, .csv">
      UPLOAD FILE
    </label>
  </form>
</template>

抛出这个错误:

InvalidStateError:此输入元素接受文件名,该文件名可能 只能以编程方式设置为空字符串。

  49 |
  50 |     let input = wrapper.find('input')
> 51 |     input.element.value = csv
  52 |     input.trigger('change')
  53 |
  54 |     // Update current status

所以,问题是:如何用文件输入值触发事件更改?在这种情况下,一个 csv 文件作为值?


您可以使用DataTransfer目的。不幸的是,它还没有被添加到 JSDOM 中,所以你无法在 Jest 中进行测试。有一个添加对象的未决问题 - https://github.com/jsdom/jsdom/issues/1568

如果您使用 Karma 在浏览器中运行测试,则可以像这样进行测试:

const wrapper = shallow(FormComponent)
const input = wrapper.find('input[type="file"]')
const dT = new ClipboardEvent('').clipboardData || new DataTransfer()
dT.items.add(new File(['foo'], 'programmatically_created.txt'))
input.element.files = dT.files
await input.trigger('change')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Jest 和 vue/test-utils 测试输入文件 的相关文章

  • Angular 2“失败:运行 ng 测试时无法读取未定义的属性‘替换’”

    我已经检查了这个问题的 github 问题 并查看了各种堆栈溢出问题和博客等内容 但我找不到解决方案来解释为什么在我的 Angular 2 应用程序中运行 ng test 时出现此错误 测试如下所示 import TestBed async
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • 如何在 AngularJS 中测试具有解析属性的控制器?

    如何测试具有解析属性的控制器 它会抛出一个错误 未知提供者 InitProvider 在测试期间 这是可以理解的 我该如何测试它 我使用路由配置中的 init 属性来加载数据 并在控制器实例化时将其传递给控制器 以便在加载数据之前路由不会更
  • 测试随机值 - 对这种方法的想法?

    好的 我一直在研究随机图像选择器和队列系统 因此您不会经常看到相同的图像 一切都很顺利 就我蹩脚的代码而言 until我到了随机位 我想测试一下 但是如何测试呢 没有Debug Assert i IsRandom 可悲的是 D 所以 我在用
  • [node][mocha]使用 mocha 测试时无法访问全局变量

    我正在尝试为快速节点应用程序创建单元测试 我希望用于测试的配置与生产中使用的配置不同 因此我实现了以下内容 In my index js 我将配置加载到全局变量中 如下所示 global env global env config requ
  • 如何阻止 Python unittest 打印测试文档字符串?

    我注意到 当我的 Python 单元测试在函数顶部包含文档时 有时框架会在测试输出中打印它们 通常 测试输出每行包含一个测试
  • Vue SPA - 如何在浏览器中呈现时隐藏 .vue 文件

    我正在开发一个用 Vue js 开发的单页应用程序 托管在 Node js 服务器上 目前它仍在开发中 但最终将暴露给外部客户 并且由于我们将处理敏感数据 我们希望避免在用户检查元素时看到 vue 文件和相对文件树结构在开发工具中 See
  • Python 的最佳实践:assert command() == False [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 模拟 ScheduledExecutorService.scheduleWithFixedDelay(...) 返回 null

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

    我正在使用 karma 在多个浏览器上运行 js 测试 该测试适用于 Chrome 和 Firefox 但我无法在 IE 上激活它们 我收到以下错误消息 无法加载 IE 它没有注册 也许你错过了一些 插入 在我的配置文件上 SET CHRO
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • 用笑话测试实现react-leaflet映射的react组件的问题

    当我尝试测试实现react leaflet库的react组件时 遇到以下问题 C digital booking ui node modules react leaflet lib index js 1 Object
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 如何在 akka actor 中测试公共方法?

    我有一个 akka 演员 class MyActor extends Actor def recieve def getCount id String Int do a lot of stuff proccess id do more st
  • 将变量从调用它的父页面传递给 Vue 组件

    我有一个简单的表格 显示了我的所有数据 主文件 php table class table table bordered table hover thead tr th Job Name th th Job Description th t
  • 模拟一个接口 { get;仅(最小起订量)

    我有一个IUnitOfWork包含到我们所有存储库的映射的接口 如下所示 public interface IUnitOfWork IDisposable IRepository
  • CRA 的 src 之外的测试文件夹?

    我为我创建的应用程序编写测试npx create react app template typescript但我不知道如何将测试文件保存在组件旁边或单独的文件夹中test 我想我应该创造test文件夹外src src App tsx etc
  • Python unittest - 使用列表断言字典

    在为我的班级编写一些测试时 我遇到了有趣的简单问题 我想断言两个字典包含一些列表 但是这个列表可能不会以相同的方式排序 gt 这会导致测试失败 Example def test myobject export into dictionary
  • 无需编译的 ES6 单元测试

    我无法找到任何 Mocha 或任何其他通过 Gulp 直接在 ES6 代码上运行的单元测试框架的示例 没有 Babel Webpack 等 我找到了一个在浏览器中使用 ES6 代码运行 Mocha 的示例 经过一些修改 但它不是自动化的 有

随机推荐

  • 给定一个日期,如何有效地计算给定序列(每周、每月、每年)中的下一个日期?

    在我的应用程序中 我有多种日期序列 例如每周 每月和每年 给定过去的任意日期 我需要计算下一个日期future序列中的日期 目前我正在使用次优循环 这是一个简化的示例 在 Ruby Rails 中 def calculate next da
  • 如何使用 Observables 而不是 Events 来监听 Angular Ionic 中的关闭事件

    我正在使用 ionic 的内联模式 这是由布尔值触发的 https ionicframework com docs api modal using isopen 但是 当模式被关闭时 布尔值不会自动设置为零 根据 ionic 的文档 开发人
  • viewpager 内的水平滚动视图

    我有一个 2 到 4 页的 viewpager 其中一页以表格形式显示数据 为此 我使用垂直滚动和水平滚动 由于horizo ntalscrollview和viewpager之间的冲突 有时 滚动不起作用 我想在页面向左滚动时滚动页面 当它
  • gulp browserify 捆绑时间太长

    我遇到了一个奇怪的问题 需要你的帮助来弄清楚发生了什么 我已经配置了 gulp 来构建我的测试React js在 ES6 中 我用过browserify设置 CommonJS 环境并babelify以获得更大的 ES6 支持 一切正常 只是
  • 矩阵作为应用函子,不是 Monad

    我遇到examples https stackoverflow com questions 7220436 good examples of not a functor functor applicative monad不是 Monad 的
  • 峰值检测代码

    我想计算实时信号在第一步中是否通过了一些阈值 在第一步中 我想检测真实信号是否低于这些阈值 以便检测信号中的峰值 我的Matlab代码 k 1 t 1 l 1 for i 1 length sm sm my signal if sm i g
  • 如何在Spring Security中动态切换应用程序上下文?

    我在我的 Web 应用程序中使用 Spring security 并使用 Javaconfig 最近 我们还在应用程序中添加了 Spring SAML 身份验证 并在经历了一些障碍后终于使其正常工作 在 的里面WebApplicationI
  • 您使用哪些工具在浏览器中调试 HTML/JS?

    我想收集适用于所有浏览器的最佳调试辅助工具 所以这可能是Firebug https addons mozilla org de firefox addon 1843对于 Firefox 那么你用什么来使用 IE 呢 苹果浏览器 歌剧 歌剧迷
  • C++:深度复制基类指针

    我四处搜索 似乎为了执行此操作 我需要更改我的基类 并想知道这是否是最好的方法 例如 我有一个基类 class Base 然后是一长串派生类 class Derived 1 public Base class Derived 2 publi
  • 仅将指定 div 的英文数字转换为波斯语/阿拉伯语

    我知道这个问题已经在这里回答了很多次 但我仍然没有得到确切的答案 我需要通过一些javascript将英文字母转换为波斯语 阿拉伯语字母 但不是整个页面 而是一个div或者更多 就像只针对特定类别一样 我遇到过这些代码 但不知道哪一个最好用
  • 指定形状宽度会生成错误:指定的尺寸对于当前图表类型无效

    我正在尝试将 Excel 图表另存为图像 通过整个代码 我调用了几个工作簿 查找所有工作表并保存所有图表 以下代码适用于 Excel 2007 和 2010 但由于 4 有可见的水平线和垂直线 如果我改变Round shp Width 4
  • Groupby pandas dataframe 具有相同值的两列

    我想要groupby A 和 B 中具有相同值的两列并制作cumsum基于该值所在的列 值的分组数据框示例 A B ValueA ValueB 0 b a 1 3 1 c a 2 2 2 a b 2 4 现在 如果该值位于 A 列中 则考虑
  • 从 Iron Python 生成 .NET 程序集

    我有一个 Iron Python 脚本 我想运行它 然后让 ipy 解释器输出一个可以在其他计算机上运行的程序集 我怎么做 是否有一个开关可以传递给 ipy exe 使用SharpDevelop 一种方法是使用夏普开发 http www i
  • 通过读取初始 .DBF 字节可以采用哪种标头格式?

    关于 DBF文件的第一个字节以及如何检测所使用的xbase版本 即文件其余部分的格式 我可以编译的最全面的列表是 Byte 0 x xxx x 001 0x 1 not used 0 000 0 010 0x02 FoxBASE 0 000
  • Ember.js - jQuery-masonry + 无限滚动

    我正在尝试在我的 ember 项目中实现无限滚动和砌体工作 砖石 砖块 是带有文字和图像的柱子 目前 我可以在页面初始加载时显示第一页并应用砌体 不过 我仍然需要执行 setTimeout 试图找出如何摆脱它 我还有基本的无限滚动代码 现在
  • 使用 Web 部署发布 ASP.NET MVC2 站点

    我目前使用 Web 部署 http learn iis net page aspx 346 web deploy http learn iis net page aspx 346 web deploy 发布我的 MVC2 应用程序 它曾经工
  • file_get_contents() 修改后的 HTTP 标头返回垃圾 html 输出

    以下代码用于使用 PHP 的 SIMPLETHTMLDOM 解析器提取 html include simple html dom php context stream context create array http gt array m
  • 在SAX解析期间确定根元素

    我正在使用 SAX 来解析 XML 文件 假设我希望我的应用程序only处理带有根元素 animalList 的 XML 文件 如果根节点是其他节点 SAX 解析器应该终止解析 使用 DOM 你可以这样做 Element rootEleme
  • 在 Flutter 中使用 After Effects 文件

    我知道如何导出Rive在 Flutter 应用程序中使用的 Flare 文件 但我怎样才能import Adobe 后遗症文件到 Rive 我知道可以这样做Lottie但我无法弄清楚如何准确地做到这一点 您可以轻松导入 bodymovin
  • 如何使用 Jest 和 vue/test-utils 测试输入文件

    我想使用 Jest 和 vue test utils 测试文件上传器组件 我有这个 describe show progress bar of uploading file gt const wrapper mount FileUpload