如何在测试中手动模拟 Svg?

2024-01-25

我在我的应用程序中使用存根文件来模拟图像,这对我来说 99% 的时间都有效。但是,我有一个组件可以根据输入渲染不同的图像,因此我希望能够在单元测试中检查输入是否创建了正确的输出。

基本上我想做的是,如果用户输入“狮子”,我的组件将显示狮子的图片,“老虎,老虎等。使用模块名称映射器, 总是如此测试文件存根我希望能够jest.mock('../lion.svg', ()=> 'lion.svg')用于特定测试。


谢谢杰斯特的变身 https://jestjs.io/docs/en/next/code-transformation配置设置你可以这样做。

包.json

"jest": {
  "transform": {
    "\\.svg$": "<rootDir>/fileTransformer.js"
  }
  ...
}

重要的

您需要明确提供transform到其他扩展(特别是*.js and *.jsx)否则你会得到错误。所以它应该是这样的:

"transform": {
  "^.+\\.js$": "babel-jest",
  "\\.svg$": "<rootDir>/fileTransformer.js"
   ...
}

As for 文件转换器.js它只是模拟导出文件的路径(您可以添加任何转换来删除路径或扩展名或其他内容):

const path = require('path');

module.exports = {
  process(src, filename) {
    return `module.exports = ${JSON.stringify(path.basename(filename))};`;
  }
};

It means

import svgIcon from './moon.svg';

会像

const svgIcon = 'moon.svg'

所以对于包含的组件

...
  <img src={svgIcon} />

你可以这样写断言

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

如何在测试中手动模拟 Svg? 的相关文章

  • ReactJS 无效校验和

    尝试使用 ReactJS 和 Node js 进行服务器端渲染时 我不断收到以下错误 React attempted to use reuse markup in a container but the checksum was inval
  • Mobile Safari 中的 React PWA 图像上传会破坏应用程序吗?

    我们很惊讶在网上没有发现任何提及此问题的信息 因此我们在此发帖希望能找到解决方案 当我们在使用 iPhone 进行移动 Safari 浏览时遇到此问题 运行下面 2 个易于遵循的测试 一个有效 一个无效 链接在这里https pwa rea
  • 在 React 中存储数据

    我实际上是 React 新手 无法选择在这种情况下存储数据的最佳方式是什么 我有一个包含一些输入的表单 我需要在提交时对这些输入中的所有数据执行一些操作 所有输入都存储在一个组件中 所以 我只需要在提交时获取所有数据 现在我正在尝试选择存储
  • 单击通知时反应本机导航到特定屏幕

    我正在尝试在用户单击他们收到的通知时实现导航 我已成功收到通知expo notifications并接受来自 API 的数据 路由 但当用户单击通知时无法导航到另一个屏幕 使用通知 export default useNotificatio
  • 我应该如何使用“redux-thunk”作为异步初始状态? (反应/还原)

    这个问题已经被问过好几次了 但是我并不真正理解我找到的答案 使用 React Redux 我尝试使用 Express 将异步数据放入我的初始状态 因为我习惯了 d3 我的选择之一是使用 d3 json 但如果它更好的话我很乐意使用其他东西
  • 为什么不能在循环或嵌套函数内调用 React Hooks?

    React Hooks 文档 https reactjs org docs hooks rules html only call hooks at the top level说不要在循环 条件或嵌套函数内调用 Hook 我知道执行顺序很重要
  • 如何使用 React 和 Jest 模拟 onPaste 事件?

    我正在尝试在我的反应项目上使用 JEST 测试来模拟粘贴事件 我有一个外部组件 App 其中包含带有 onPaste 事件的输入字段 我想测试过去的数据并检查输入值 it on past with small code gt Create
  • React this.setState 不是一个函数

    尝试编写使用第 3 方 API 的应用程序时不断收到此错误 类型错误 this setState 不是一个函数 当我尝试处理 API 响应时 我怀疑这个绑定有问题 但我不知道如何修复它 这是我的组件的代码 var AppMain React
  • 如何使用 Material UI 在应用栏下方打开下拉菜单?

    我是 Material UI 的新手 刚刚开始摆弄他们的带有菜单示例的应用栏 https mui com material ui react app bar app bar with menu 切换菜单下拉菜单时 它会在应用栏本身上方打开
  • 如何在 React 功能组件中正确设置 setInterval 计时器?

    我刚刚开始学习 React 我正在观看一个涉及状态和钩子的教程 它只是每 1000 毫秒处理一次更新时间 或者我是这么认为的 import React from react let count 0 function App const no
  • 与 webpack 捆绑时如何为每个 .scss 文件提供变量.scss?

    这是我当前的项目目录结构 因为我想不出更好的方法来组织每个组件都有自己的用例 scss文件 但是 整个应用程序都提供主题 其中包括全局variables scss文件 目前 我正在导入variables scss文件位于每个组件的顶部 sc
  • “npx create-react-app appname”不起作用

    当我跑步时npx create react app appname我收到以下错误消息 You are running create react app 4 0 0 which is behind the latest release 4 0
  • 这可以用 Moq 来嘲笑吗?

    我正在努力模拟一些外部依赖项 并且在一个第三方类中遇到了麻烦 该类在其构造函数中接收另一个第三方类的实例 希望 SO 社区能给我一些指导 我想创建一个模拟实例SomeRelatedLibraryClass它的构造函数接受一个模拟实例Some
  • React-Native 中的导航抽屉

    我是反应原生的新手 不介意我问一个基本问题 我想知道 实现抽屉式导航的分步过程是什么 推荐链接这个链接 https github com react native community react native side menu usage
  • 如何设置“阅读文档”以使 Sphinx autodoc 选项发挥作用?

    我的项目不是使用 autodoc 构建的 我遇到了关于我的项目未在 autodoc 中构建的常见问题 https read the docs readthedocs org en latest faq html my project isn
  • 在 React 应用程序中使用 API 密钥

    我有一个使用两个第三方服务的 React 应用程序 该应用程序已开始使用react create app 这两项服务都需要 API 密钥 通过脚本标签提供一个密钥 如下所示 另一个 API 密钥在请求中使用 我将实际密钥存储在常量中并使用它
  • 如何在要测试的 React 组件内模拟自定义钩子?

    如果您有一个调用获取数据的自定义挂钩的 React 组件 那么在测试 React 组件时模拟内部自定义挂钩结果的最佳方法是什么 我看到两种主要方法 1 Jest mock 自定义钩子 这似乎是最推荐的方法 但它似乎要求测试对内部实现细节以及
  • Heroku、NodeJs 和 React 问题:SCRIPT5007:无法获取未定义或空引用的属性“应用”

    我猜我对 Polyfill 有一个奇怪的问题 我在我的应用程序中使用了 MERN stack 并推送到了 Heroku 由于某种原因 在我的 Chrome 计算机上我可以查看该网站 但是 在其他计算机上我收到空白页面并在控制台中出现错误 S
  • Jest - 测试使用react-router的组件

    我正在测试一个呈现具有以下 contextTypes 的子组件的组件 Component contextTypes router PropTypes object isRequired 我对笑话完全陌生 但来自摩卡 酶我从未遇到过这个问题
  • 设置状态时重新渲染过多 - useSWR

    我在用useSWR https swr vercel app docs data fetching获取数据 然后使用数据 我想通过使用reduce 获得总计 如果我 console log 输出该值 它工作正常 但一旦我尝试使用该值设置状态

随机推荐

  • SOQL python 中的通配符

    我正在尝试使用 simple salesforce 包使用 python 从 salesforce 进行查询 当我使用通配符时 它会抛出故障错误 soql SELECT FROM Contact where LastModifiedDate
  • Protractor 的 waitForAngular() 在 angular-webapp 上失败(真实设备上的 appium/chrome)

    我 新 使用量角器来运行 e2e 黄瓜测试 我有一个基于 angularJS 的网络应用程序 我正在使用 appium 在真实的 Android 设备上远程运行测试 这是我正在使用的版本 windows8 1 email protected
  • SBT:评估任务顺序

    我正在尝试获取有关 sbt 项目中所有模块的信息 有以下代码 lazy val getModule taskKey Module get single module info lazy val allModules taskKey Seq
  • 在 FilterChain.doFilter() - HttpServletResponseWrapper 之后添加 Cookie 以忽略刷新?

    我想将 cookie 添加到HttpServletResponse其内容 通常是 HTML 呈现后 正如这里提到的 http osdir com ml java jasig uportal 2005 10 msg00276 html htt
  • 基于 SQS 消息触发 SWF 工作流

    前言 我正在尝试针对我认为非常常见的用例提出一个提案 并且我想使用 Amazon 的 SWF 和 SQS 来实现我的目标 可能还有其他服务更符合我想要做的事情 所以如果您有建议 请随时扔掉它们 Problem 最基本的需求是客户端 移动设备
  • 在 webpack 中使用 file-loader 和 html-loader 时,图像的 src attr 为“[object Module]”

    我正在从头开始使用 webpack4 做一个项目 但是当我尝试在 HTML 文件中显示图像时 我遇到了一个奇怪的问题 后npm run build 图像标签的src构建为
  • Scala 中需要 @tailrec 注解吗? [复制]

    这个问题在这里已经有答案了 我了解递归函数的问题以及堆栈溢出问题的风险 但是 如果一个函数能够针对尾递归进行优化 那么为什么不自动应用此优化 即 为什么我需要标记一个可以优化的函数 tailrec 如果一个函数能够针对尾递归进行优化 那么为
  • 将 purrr::map2() 与 dbplyr 一起使用

    我试图从一个表 位置 中选择行 其中特定列 位置 的值落在另一个表 my ranges 中定义的范围内 然后从 我的范围 表 我可以使用 tibbles 和几个来做到这一点purrr map2调用 但相同的方法不适用于 dbplyr 数据库
  • Java:迭代开始和结束日期,最佳实践?

    迭代开始日期和结束日期的最佳实践是什么 我曾经使用过以下的变体日期迭代器 http helpdesk objects com au java how can i iterate through all dates in a range 不确
  • UIScrollView 中的 UICollectionView -> 滚动顺序

    我有一个UICollectionView里面一个UIScrollView 我的计划是 如果UICollectionView到达顶部或底部 外部 ScrollView 获取滚动手势 如果外 ScrollView 到达顶部或底部 Collect
  • 奇怪的语义错误

    我已在新的 Linux 主机上重新安装了 emacs 24 2 50 并基于以下内容启动了新的 dotEmacs 配置magnars https github com magnars emacs demacs 配置 由于我在之前的工作流程中
  • PHP脚本自动创建文件结构表示[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 遍历文件夹并显示 HTML 内容 https stackoverflow com questions 2769175 php iterate through folders and displ
  • getActivity() 找不到符号 symbol :方法 getActivity()

    我需要有关我的彩信应用程序的此文件的帮助 getActivity 导致构建错误 Error cannot find symbol method getActivity 到目前为止 我已经尝试了很多方法来使这项工作正常进行 例如extends
  • 无法使用装饰器覆盖类对象的 str 结果

    请参阅下面我的回答 发布问题后我意识到发生了什么事 我尝试使用装饰器覆盖类的字符串表示形式不起作用 我一定错过了一些东西 但不知道它是什么 from functools import wraps def str dec obj wraps
  • 水晶报告 .net 4 的问题

    我之前在 net 3 5 中使用过 Crystal Reports 但自从升级到 Net 4 0 后 我遇到了以下错误 错误 5 找不到类型或命名空间名称 CrystalDecisions 是否缺少 using 指令或程序集引用 C Use
  • Robocopy 命令行 - 带空格的文件

    我正在尝试运行以下命令 robocopy exe eisdevl nas gatech edu coldfusion devl cfapps cfeis mybeap eisdevl nas gatech edu coldfusion te
  • 在Java中,如何将十六进制字符串转换为byte[]? [复制]

    这个问题在这里已经有答案了 我在 Java 中使用以下函数将加密字符串转换为十六进制格式 public static String toHex byte buf StringBuffer strbuf new StringBuffer bu
  • 在 ggplot 和 stat_function() 中叠加对数正态密度

    我尝试通过叠加一个函数stat function in ggplot但无法弄清楚我的错误 这个例子产生了一个漂亮的图 data lt data frame x rt 10000 df 7 ggplot data data aes x x g
  • 当窗口移动到屏幕左上角时如何禁用窗口最大化?

    我有一个设置了ResizeMode CanResizeWithGrip 和AllowTransparency true 的窗口 它工作正常 直到它移动到屏幕顶部 然后自动最大化 如何阻止它最大化 以便我可以将屏幕显示为位于屏幕顶部的窗口 T
  • 如何在测试中手动模拟 Svg?

    我在我的应用程序中使用存根文件来模拟图像 这对我来说 99 的时间都有效 但是 我有一个组件可以根据输入渲染不同的图像 因此我希望能够在单元测试中检查输入是否创建了正确的输出 基本上我想做的是 如果用户输入 狮子 我的组件将显示狮子的图片