首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用svg-sprite-loader导入SVG的Jest测试组件

SVG-Sprite-Loader是一个Webpack加载器,用于将SVG图标打包成一个SVG精灵图,并生成对应的CSS样式。Jest是一个用于JavaScript代码测试的框架。在使用SVG-Sprite-Loader导入SVG的Jest测试组件时,可以按照以下步骤进行操作:

  1. 首先,确保已经安装了Webpack和Jest,并且配置了相应的Webpack配置文件和Jest配置文件。
  2. 在Webpack配置文件中,添加SVG-Sprite-Loader作为模块的加载器。可以使用npm或者yarn安装SVG-Sprite-Loader,并在Webpack配置文件中进行如下配置:
代码语言:txt
复制
module: {
  rules: [
    {
      test: /\.svg$/,
      use: [
        'svg-sprite-loader',
        'svgo-loader'
      ]
    }
  ]
}

这样配置后,Webpack会将所有以.svg结尾的文件交给SVG-Sprite-Loader处理,并将它们打包成一个SVG精灵图。

  1. 在Jest配置文件中,添加对SVG文件的处理。可以使用npm或者yarn安装jest-svg-transformer,并在Jest配置文件中进行如下配置:
代码语言:txt
复制
transform: {
  '^.+\\.svg$': 'jest-svg-transformer'
}

这样配置后,Jest会使用jest-svg-transformer对SVG文件进行处理,以便在测试组件中正确导入SVG。

  1. 在测试组件中,使用import语句导入需要测试的组件,并使用相应的SVG图标。例如:
代码语言:txt
复制
import React from 'react';
import { render } from '@testing-library/react';
import MyComponent from './MyComponent';
import { ReactComponent as MyIcon } from './my-icon.svg';

test('renders MyComponent with MyIcon', () => {
  render(
    <MyComponent icon={<MyIcon />} />
  );
});

在这个例子中,我们导入了一个名为MyIcon的SVG图标,并将其作为props传递给了MyComponent组件。

总结: 使用SVG-Sprite-Loader导入SVG的Jest测试组件的步骤包括配置Webpack加载器和Jest处理器,并在测试组件中正确导入SVG图标。这样可以确保在Jest测试中正确使用SVG图标,并进行相应的断言和验证。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用svg-sprite-loader 遇到的问题

趁记忆还热乎 赶紧过来记录一下自己踩坑的记录 现有的项目是从另一个项目移植过来的, 并不是完全移植 为了减小项目的体积 前端组长将一些暂时用不到的组件 node包都剔除了 这也就引出了一下的问题...今天调试菜单图标的时候 发现项目中菜单的图片渲染用到的是icon-svg 这个组件 但怎么找都找不到这个组件 于是我才原有项目中找了一下 copy过来 但这样子仍然不行啊,svg标签出来了 但样式...svg内容没有出来, 于是继续把样式扒过来, 样式对了 但svg内容就是死活出不来, 于是我一直搜这个svg在哪个地方引入的 怎么注入到页面的 折腾了一上午,终于让我发现了 一句话 原项目中这样写...把svg-sprite-loader 引入 引入之后 配置好编译好的目录 { test: /\.svg$/, loader: 'svg-sprite-loader',...[ext]') } }, 二个loader都处理了svg文件 导致svg-sprite-loader'在编译的时候 并不是svg源文件 于是出错了 解决方案: 为二个loader

1.6K20
  • Vue | 使用 SVG sprite loader 来引入 svg

    但是我们现在在用的是 Vue 官方的代码是这样的 // webpack >= 2 { test: /\.svg$/, loader: 'svg-sprite-loader', options...').exclude.add(dir) } } 其他备注 // svg 相关组件版本 "svg-sprite-loader": "^6.0.11", "svgo-loader".../assets/icons', true, /\.svg$/));} catch (error) {console.log(error);} // 如果不加 try,在单元测试的时候可能会遇到问题.../assets/icons', true, /\.svg$/));} catch (error) {console.log(error);} // 如果不加 try,在单元测试的时候可能会遇到问题...我们可以使用一个叫做 svgo-loader 的插件来解决此问题 不知道是什么原因,高版本的这个插件会导致加载不出 svg 的 bug,我使用的是以下版本,是正常使用的 // 和上文提到的一样 {

    3.3K20

    JavaScript 测试系列实战(一):使用 Jest 和 Enzyme 测试 React 组件

    本篇教程是 JavaScript 测试系列实战 的第一篇教程,首先介绍了测试的类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 Enzyme 对 React 组件进行浅层渲染...Jest 测试,我们来详细讲解一下: 我们先导入需要测试的单元/模块 test 函数定义了一个测试用例,第一个参数就是用例描述,一般是一句完整的描述,例如上面的 dividing 6 by 3 equals...因此这里建议直接使用 npx jest 执行测试。 编写第一组测试 每个测试文件通常有多个测试用例。Jest 允许我们通过 describe 函数对测试用例进行分组,它创建了一个可以组合多个测试的块。...Jest 测试文件中使用它。...配置 jest-enzyme 你应该还记得,在刚才的测试代码中,我们还是使用了 Jest 自带的 Matcher(toEqual)。

    3K10

    如何在Vue项目中更优雅地使用svg

    最近看项目视频的时候对里面使用 svg 的方式感到很好奇,于是去网上查了一下,发现 svg 竟然也有类似于 css 雪碧图一样的用法,也就是 svg-sprite(孤陋寡闻了),而且配合插件后能够以组件化的方式使用...每次要使用图标都得写这么一段代码,并不是很方便,是否可以像使用组件那样使用图标? 这里的关键是使用 svg-sprite-loader 这个插件。...Vue项目中更优雅地使用svg-1_2.png 接下来封装图标组件。...'@/components/common/icon/SvgIcon.vue' Vue.component('svg-icon', SvgIcon) // 让 icons/svg下面的图片自动导入,而不是每次手动导入...所以才使用了 svg-sprite-loader 插件,这样每次新增图标,只需要下载图标并放到对应文件夹即可。

    13.3K21

    在 Vue 项目中更优雅的使用 icon

    前言 在 Web 开发中,我们经常会用到 icon,icon 的使用经历了从图片到字体,再到 svg 的演变过程,也产生出相应的 icon 库,如雪碧图、Font Awesome、Iconfont 等等...随着前端的发展,icon 使用方案落在了 svg 上,svg 有着矢量图的优势,可以无限放大而不失真,而且 svg 本身就是一种 XML 文件,可以直接在 HTML 中使用,也可以通过 CSS 进行样式控制...,但是在 Vue 项目中使用 svg 时,我们会遇到一些问题,本文将介绍如何在 Vue 项目中更优雅的使用 svg icon。...工具 svg-sprite-loader svgo-loader svg-sprite-loader用来打包 svg 图标,svgo-loader 来精简我们的 svg 内容。...参考资料 手摸手,带你优雅的使用 icon 未来必热:SVG Sprites 技术介绍 SVG 精简压缩工具 svgo 简介和初体验 svg-sprite-loader svgo svgo-loader

    55540

    解锁SVG新姿势:ChatGPT绘制图标+SVG Symbol自动导入

    4.2 自动化导入 为了进一步简化该流程,我们可以使用Webpack和svg-sprite-loader自动导入SVG Symbol。...}, ], }, ] } 该规则将处理所有以.svg结尾的文件,并使用svg-sprite-loader将它们转换为SVG Symbol元素。...该组件使用了元素引用了SVG文件中的Symbol元素。其中,name属性用于指定Symbol元素的ID。...import "@/images/svg/rough.svg"; 5 总结 本文主要介绍了两个方法,分别是使用ChatGPT自动生成SVG代码和使用Webpack和svg-sprite-loader自动导入...综上所述,通过使用ChatGPT自动生成SVG代码和使用Webpack和svg-sprite-loader自动导入SVG Symbol,我们可以更加便捷地在代码中使用SVG图标,提高开发效率和代码质量。

    3.6K10

    Vue3 使用 svg-sprite-loader 实现 svg 图标按需加载

    前面文章有讲到 svg 图标按需加载的优势以及 Vue 如何使用 vue-svg-icon 实现 svg 图标按需载入 今天来学习一下使用 svg-sprite-loader 在 Vue3 项目中实现图标按需加载...1、将 email.svg 文件导入项目 svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3...> 这里将 svg 图标中对应的图标颜色值改为字符串 currentColor,方便使用时控制图标实时颜色 将图标放在特定文件夹下,这里以 @/assets/svg 中导入的 svg 为例 2、安装...svgRule.uses.clear(); svgRule .use("svg-sprite-loader") .loader("svg-sprite-loader").../plugin"; createApp(App) .use(plugin, { imports: [] }) 7、图标组件的使用 <SvgIcon name="email" :size

    7.6K31

    如何在VUE项目中引入SVG图标

    然而,SVG并非在所有情形下皆为最佳选择。对于一些复杂度较高及色彩丰富的图像,例如照片,使用位图可能更为恰当。因此,在每个具体的项目中,皆需依据实际需求而决定使用何者。 具体过程 一....安装 npm i svg-sprite-loader --save 二. 在components文件夹中,建新文件夹曰SvgIcon,再于文件夹下建新文件,名之曰index.vue。...其成立之目的,正是为了使吾等在项目中使用 SVG 图标时能变得更为便捷。 name: 'SvgIcon' 此组件接受两属性,名若iconClass及className。...' // 导入 SvgIcon 组件 import SvgIcon from '@/components/SvgIcon' // 将 SvgIcon 组件注册为全局组件 Vue.component('.../svg' 目录下的以 '.svg' 结尾的文件 const req = require.context('.

    1K10

    自动化测试 Jest 的使用总结基础篇

    使用 jest 的原因 随着前端的发展,web的交互越来越复杂,自动化测试是非常有必要融入到开发的流程中,而目前界内普遍通用且比较火的就是有 facebook开发的 Jest 这套工具。...他可以创建测试用例,执行测试,自身还有驱动和mock,且用起来也是很方便,正如 jest 的官网这样描述 jest,Jest is a delightful JavaScript Testing Framework...同时, jest 也支持做不匹配的校验,也就是反向的校验。下面就是一些不同的匹配器。 简单类型的校验; 使用 tobe() 匹配器做简单类型的校验,校验结果是否正确。...jest 做回调操作测试需要注意,函数的回掉情况。...钩子函数的使用 钩子执行 再执行测试文件的时候,如果有需要对函数进行特殊处理的可以在执行前和执行后使用钩子函数,beforeEach and afterEach。

    2.8K111

    使用Jest测试包含setTimeout调用的函数踩坑记录

    前两天给一个包含setTimeout调用的函数写单元测试,在使用fake timer的时候遇到了问题,记录一下。...在启用fake timer的时候,setTimeout、setInterval都会使用Jest提供的假实现,他们不会真正阻塞住测试用例。...根据Jest的官方文档,调用这个函数后,所有队列中的“微任务”都会被立刻执行,这里的目的就是保证catch回调能被立刻调用; 使用jest.advanceTimersByTime(6000)代替await...咳咳……也就是说,Promise所使用的微任务队列又是另外一个微任务队列,并且不归Jest控制! 因此,问题也明确了:runAllTicks什么作用也没有发挥,我们回到了最初遇到的问题。...注意我们此时使用的是fake timer,因此是无法使用await delay(0)这个方案的,因此这会导致我们的测试用例在等待setTimeout被回调,而fake timer的setTimeout又在等待

    6.9K60

    Vue项目中优雅使用icon

    对svg文件有默认的url-loader 处理,我们要使用svg 图标需单独进行配置 下载一个插件svg-sprite-loader来单独处理我们的svg图标,它是一个webpack loader,支持将多个...svg打包成svg sprites npm下载 npm install svg-sprite-loader -D yarn下载 yarn add svg-sprite-loader -D 我们要怎么使用它呢...的loader对我们icons/目录下svg文件的处理,然后新增了一个规则让svg-sprite-loader处理我们icons/文件夹下的svg文件,最后我们设置了icon-加上经过处理的svg文件名作为...不,我们还可以再简化,因为每次使用都得svg标签包着use太麻烦了,写着也不太雅观,我们继续简化,一定要看起来使用起来都十分优雅 再进阶-SvgIcon组件 在components/目录下新建SvgIcon...最后就是我们的使用了,在main.js文件引入icons/index.js import "@/icons/index.js"; 再来看看我们使用图标的方法,组件中: svg-icon

    2.3K20

    VUE项目iconfont自定义SVG(非SVG文件)-_PUSDN

    简述 VUE项目iconfont自定义SVG,在线或者离线下载的阿里巴巴icon font.js;并非SVG文件; 前情提示 VUE2; 在线或者离线下载的阿里巴巴icon font.js;并非SVG...文件; 文中使用的icon仅用于演示; 一说 同步更新最新版、完整版请移步PUSDN Powered By PUSDN - 平行宇宙软件开发者网www.pusdn.com ,转载请标明出处!...: 如下图,可以看到svg彩色,而其他还是黑白,还有几个圆圈没有展现出来 ​ symbol介绍 这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。...vertical-align: -0.15em; fill: currentColor; overflow: hidden; outline: 0; } ​ 其他组件中使用...文件,需要,此处不做SVG介绍 npm install --save-dev svg-sprite-loader 或者 yarn add svg-sprite-loader -D 或者查看ant design

    32730
    领券