返回顶部
首页 > 资讯 > 前端开发 > node.js >vue-test-utils怎么用
  • 682
分享到

vue-test-utils怎么用

2024-04-02 19:04:59 682人浏览 独家记忆
摘要

小编给大家分享一下Vue-test-utils怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue-test-utils官

小编给大家分享一下Vue-test-utils怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

vue-test-utils官网:https://vue-test-utils.vuejs.org/zh/

jest官网:Https://jestjs.io

依赖包

请安装它们?

yarn add @vue/test-utils vue-jest
yarn jestjest-serializer-vue
yarn add babel-jest babel-core@^7.0.0-bridge.0

⚠️:vue-jest依赖与babel-core。我们的环境现在都是babel7,通过npm安装的babel-core默认的还是6版本,所以要指定babel-core安装的系列为7,否则会出现解析问题。

配置

jest配置:告诉jest它需要哪些额外的配置

jest相关的配置可以配置在package.JSON中或者单独的jest.config.json文件中:

// jest.config.json
{    
  "moduleFileExtensions": [
    "js",
    "json",
    "vue"
  ],
  "transfORM": {
    "^.+\\.js$": "<rootDir>/node_modules/babel-jest", // jest使用babel解析js
    ".*\\.(vue)$": "<rootDir>/node_modules/vue-jest" // jest对vue单文件的解析
  },
  "snapshotSerializers": [
    "<rootDir>/node_modules/jest-serializer-vue"
   ],
  "moduleNameMapper": {
    "^@/(.*)$": "<rootDir>/src/$1", //为了解析webpack配置的alias字段
    "^tim-architect/(.*)$": "<rootDir>/tim-architect/$1"
  },
  "transformIgnorePatterns": [
    "node_modules/(?!(yourModuleName))"
  ]
}

⚠️:transformIgnorePatterns的默认配置是["node_modules"],表示所有的node_modules下的包都不需要babel解析。但是一些3rd库提供的文件仍然是未编译的es6语法,jest在解析时会报语法错误。因此需要指定白名单,需要那些node_modules下的包被babel转换。

babel配置:告诉babel你需要用哪些工具去处理一坨(?香么 ?? : ? )代码

推荐使用babel.config.js(babel需要转换的node_modules同样生效)而不是.babelrc(当前项目生效)。

{
  ...,
 env: {
  test: {
   presets: [[
    '@babel/env',
    {
     modules: 'auto', // 现在不能通过WEBpack来解析s6 module,需要使用babel来解析,所以要开启
     targets: {
      node: 'current' // 指定环境为当前node版本,减少解析不识别语法的范围
     }
    }
   ]],
   plugins: [[
    '@babel/plugin-transform-runtime', {
     corejs: 2,
     useESModules: false // 不允许使用es modules,babel需要通过@babel/plugin-transform-modules-commonjs将es module转换为commonjs模块解析
    }
   ]
  ]
 }
 }
}

⚠️:通过babel的env.test指定jest测试时需要的babel配置(同webpack转换解析时不同),jest会自动识别env.test的配置。

单测文件

理解:

  • 单元测试不应该追求代码的覆盖率;

  • 单元测试主要是为了测试组件UI,数据驱动后UI的变化在可控范围之内;

  • 测试组件应以纯组件为主(业务组件逻辑过于复杂或经常变动,涉及到的引入文件过多,不便于测试所有的功能性),纯组件作为项目的基础组件功能性上基本不变化。

遇到的问题总结

1.异步生命周期

vue-test-utils提供了对异步请求方法的mock,文档如下:https://vue-test-utils.vuejs.org/zh/guides/testing-async-components.html

但是对于生命周期函数是异步的情况要怎么处理呢?以下是亲测有效但是有点麻烦的姿势:

// 假设在异步生命周期方法中,调用的函数是init,那我们就通过jest.fn()提供的方法进行mock
init.default = jest.fn().mockImplementation(() => Promise.resolve(yourValue))

// 在Jest提供的全局方法中,调用异步生命周期的方法,以保证每个断言都是在生命周期之后
beforeEach(async () => {
 init.default.mockClear()
 await wrapper.vm.$mount() // 异步生命周期里会调用init方法
})

2.如果测试文件中包含require.context,请看这一条 :

这时候没有webpack怎么办?当然是用别人踩过坑的方法救急!

说实话,如果组件引用了这种东西,我觉得它不够纯洁,还是不要管它好了╮( ̄⊿ ̄")╭,放它走吧。

但是为什么要解决这个问题呢?想到以后可能还要测试js文件,我们的标准也有可能是覆盖代码行数的测试,所以,还是解决一下吧。

其实思路很简单,我们需要在全局重写require.context,babel再遇到require.context就不会报错了。

// 别怕,不需要你手动写,有人已经写了个插件了:babel-plugin-require-context-hook
// 在babel.config.js的env.test中加上这个插件
...
plugins: [..., 'require-context-hook']
...

// 在jest.config.json中配置一下setupFiles 
// setupFiles表示在每个运行文件前添加的额外配置
...
"setupFiles": ["<rootDir>/.jest/reGISter-context.js"],
...

// 创建.jest/register-context.js文件,引入时进行全局的注册
import registerRequireContextHook from 'babel-plugin-require-context-hook/register';
registerRequireContextHook();

3.测试过程总是报synax error ,诸如import无法解析这类es6语法引起的错误

小兄弟,只能说好好检查一下你的babel是否配置正确,并且安装了适合的babel-core版本。出现这个问题的时候,说明babel并没有解析es6语法,顺藤摸瓜,

(确保依赖包的安装源相同,建议用yarn)

  • if 是node_modules里的文件导致的,通过配置transformIgnorePatterns告诉babel需要它解析的模块;

  • else if 是项目的文件导致的,那就查看下自己的babel.config.js(确保不是.babelrc文件)是否配置正确,如果使用了@babel/preset-env,请注意module参数的配置;

以上是“vue-test-utils怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: vue-test-utils怎么用

本文链接: https://lsjlt.com/news/78116.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue-test-utils怎么用
    小编给大家分享一下vue-test-utils怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue-test-utils官...
    99+
    2024-04-02
  • 在vue-test-utils中mock全局对象怎么用
    小编给大家分享一下在vue-test-utils中mock全局对象怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue-t...
    99+
    2024-04-02
  • angular-utils-ui-breadcrumbs怎么用
    这篇文章主要介绍angular-utils-ui-breadcrumbs怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!angular-utils-ui-breadcrumbs是...
    99+
    2024-04-02
  • python中utils包的作用是什么
    utils包通常用于存放一些辅助函数或工具类,用于简化代码编写和提高代码的可重用性。这些工具函数和类通常不属于特定的业务逻辑,而是为...
    99+
    2024-04-03
    Python utils
  • js中test方法怎么用
    这篇文章将为大家详细讲解有关js中test方法怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript是什么JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为Jav...
    99+
    2023-06-14
  • javascript中test()方法怎么用
    小编给大家分享一下javascript中test()方法怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!test()var str =&n...
    99+
    2023-06-17
  • Shell的test命令怎么用
    今天小编给大家分享一下Shell的test命令怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Shell中的 test ...
    99+
    2023-06-27
  • Linux中test命令怎么用
    小编给大家分享一下Linux中test命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux常用命令test命令是脚本编写中一个非常重要的命令。其主要...
    99+
    2023-06-28
  • golang test工具怎么使用
    本文小编为大家详细介绍“golang test工具怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang test工具怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是 golang te...
    99+
    2023-07-05
  • Linux系统test命令怎么用
    这篇文章主要为大家展示了“Linux系统test命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统test命令怎么用”这篇文章吧。 在Linux系统中test 命令用于检查某...
    99+
    2023-06-28
  • python中utils包不能导入怎么解决
    如果Python中的utils包无法导入,可能有以下几种解决方法: 确保utils包所在的路径已经添加到Python的模块搜索路径...
    99+
    2024-04-03
    Python utils
  • shell中的test命令怎么使用
    在shell中,test命令用于测试文件或表达式是否为真。它的一般语法如下:```test expression```或者可以使用方...
    99+
    2023-09-28
    shell
  • mybatis的test坑怎么解决
    今天小编给大家分享一下mybatis的test坑怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述mybatis使用...
    99+
    2023-07-05
  • Mybatis条件if test怎么使用枚举值
    本篇内容主要讲解“Mybatis条件if test怎么使用枚举值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mybatis条件if test怎么使用枚举值”吧!Mybati...
    99+
    2023-07-01
  • C++的Test有什么作用
    这篇文章主要讲解了“C++的Test有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++的Test有什么作用”吧!C++Test可以自动建立一个测试驱动程序,由于C++Test能够...
    99+
    2023-06-17
  • go test的作用是什么
    “go test”是测试命令,作用是对Go语言编写的程序进行测试;这种测试是以代码包为单位的。“go test”命令会自动读取源码目录下面名为“*_test.go”的内含若干测试函数的源码文件,测试函数一般是以“Test”为名称前缀并有一个...
    99+
    2023-05-14
    Golang go语言
  • MyBatis sql中test怎么判断Boolean
    这篇文章给大家分享的是有关MyBatis sql中test怎么判断Boolean的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mybatis sql中test判断Boolean三种方式<selec...
    99+
    2023-06-26
  • C++中怎么利用Test自动生成函数
    C++中怎么利用Test自动生成函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。静态测试 C++Test内嵌了业界最出名的Effective C++(epcc)...
    99+
    2023-06-17
  • go test命令有什么作用
    这篇文章主要介绍“go test命令有什么作用”,在日常操作中,相信很多人在go test命令有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go test命令有什么作用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • SpringBoot Test类注入失败怎么办
    这篇文章将为大家详细讲解有关SpringBoot Test类注入失败怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如下所示本来 bookService的引用一直是null。导致每次测试都报空指针异常...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作