最近在搞Jest单元测试,如何在vue中安装和使用jest我就不说了,前一篇文章简单的说了一下在使用jest时遇到的一些问题,但是我觉得并没有真正的解决的很好。后面会在学习过程中更新前面的那篇文章,加入后续遇到的问题以及解决问题的方法,持续的做一个记录。

  好了,废话不多说,咱们开始今天的内容吧。因为之前使用jest时候的项目是移植过来的项目,因为复杂的环境以及外部文件引入的等等等等的问题。采用的方式就是新建一个空的vue-cli生成的用jest来做单元测试的项目,这就导致了测试环境的配置是极为脆弱的。而且还有十分大的隐患。但是又没办法一下子解决。所以,我想在这篇文章中,整理记录一下jest的配置参数的用法等。

  jest的配置文件是单独生成在unit文件夹下的一个独立文件,并没有和vue-cli生成的webpack构建的环境相关联。所以个人感觉这样更清爽一些吧。

一、默认配置文件参数的意义

  我们先来看一张图,然后我一一介绍说明他们都是用来做什么的:

  这是当前版本的vue-cli生成的jest.conf.js的配置文件,我们可以在package.json中的配置项里看到,我们在npm run unit 的时候,真正运行的就是这个文件的配置。

  前面的文章说过了,要添加一个testURL来解决找不到localstorage的问题。并且修改mapCorverage为collectCorverage,前者是旧版本的参数。

  那我们接下来一一介绍每个参数的配置及其含义。

  rootDir:其实就是指整个项目的根目录,也就是最外层的目录。这里多句嘴,再解释下path.resolve(__dirname,"../../")的意义,他最终返回的结果是该问见所在的根目录,简单来说__dirname返回的是当前目录,再向上两层,就是整个项目的根目录了。

  moduleFileExtensions:这个文档解释的是“模块使用的文件扩展名数组,从左往右查找这些文件”。实际上我的理解,这个参数的意义就是让jest知道你需要测试覆盖的文件的扩展名都是什么。

  moduleNameMapper:一种正则表达式到模块名的映射,匹配到的文件的内容可以是空的。我理解的是,可以通过该参数,来mock一些图片,css等静态资源文件,因为我们在测试的时候实际上是不太需要这些文件的,但是有需要引入它作为环境上的依赖。

  transform:简单来说就是转换器,正则匹配到的文件可以通过对应模块的转换器来解决一些未来版本语法时可以使用它。通过正则来匹配文件,为匹配到的文件使用对应的模块。

  snapshotSerializers:快照测试的插件,会生成测试文件的一个快照版本,可以再package.json中查看安装的快照插件。

  setupFiles:运行一些测试环境所要依赖的模块的路径列表,比如引入vue,elementUI等插件的列表,以给测试提供完整的环境。

  collectCoverage:是否收集测试时的覆盖率信息。

  testURL:该选项是设置jsdom环境的参数。

  coverageDirectory:jest输出覆盖率信息文件的目录。

  collectCoverageFrom:为数组中匹配的文件收集覆盖率信息,即使并没有为该文件写相关的测试代码,需要将collectCoverage设置为true,或者通过--corverage参数来调用jest。

  这样我们就解释完了基础配置的参数,学习过后,我们对jest的配置有了一个基本的了解。但是要想写单元测试文件,还是远远不够的。下一篇文章,我会介绍如何在为vue的单文件组件写测试用例。并且解释说明一下我在使用jest时候的一个疑问,什么是localVue,shallowMount与mount与localVue的区别是啥?localVue与Vue的区别是啥?那么今天就到这里啦...

  

  参考:https://jestjs.io/docs/en/getting-started

学习笔记——在vue中如何配置Jest(一)的更多相关文章

  1. Linux学习笔记1-在CentOS 7中安装配置JDK8

    说明: 参考博客:http://blog.csdn.net/czmchen/article/details/41047187系统环境:CentOS 7安装方式:rpm安装JDK地址:http://ww ...

  2. 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

    (1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...

  3. [学习笔记] 在Eclipse中导入项目

    参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.

  4. CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  5. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar中的类解压后放在运行jar中

    前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中 使用7z打开压缩包,查看所有依赖的jar都被解压以包名及class的方式存储在了运行jar中,此时jar的 ...

  6. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中

    本文需要参考前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar在子目录中 上文是导出的运行的依赖jar被放在了子目录中,本文是将依赖jar放在可运行jar的本身,这样发布的 ...

  7. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar在子目录中

    工程创建可参考前文: [学习笔记] 在Eclipse中使用Hibernate,并创建第一个工程,数据库为Oracle XE 在工程上鼠标右键: 找到java 选择 Runable JAR file N ...

  8. Web安全学习笔记 SQL注入中

    Web安全学习笔记 SQL注入中 繁枝插云欣 --ICML8 权限提升 数据库检测 绕过技巧 一.权限提升 1. UDF提权 UDF User Defined Function,用户自定义函数 是My ...

  9. vue学习笔记(九)vue-cli中的组件通信

    前言 在上一篇博客vue学习笔记(八)组件校验&通信中,我们学会了vue中组件的校验和父组件向子组件传递信息以及子组件通知父组件(父子组件通信),上一篇博客也提到那是对组件内容的刚刚开始,而本 ...

随机推荐

  1. Confluence 6 从生产环境中恢复一个测试实例

    请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明. 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 ...

  2. 【Web】servlet、filter和listener

    一般地,servlet.filter.listener是配置到web.xml中(web.xml 的加载顺序是:context-param -> listener -> filter -&g ...

  3. 后RCNN时代的物体检测及实例分割进展

    https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650736740&idx=3&sn=cdce446703e69b ...

  4. VUE开发请求本地数据的配置,旧版本dev-server.js,新版本webpack.dev.conf.js

    VUE开发请求本地数据的配置,早期的vue-lic下面有dev-server.js和dev-client.js两文件,请求本地数据在dev-server.js里配置,最新的vue-webpack-te ...

  5. PHP中json_encode()使用须知,JSON数组和JSON对象

    ⊰ 偷偷的告诉你,这是一个很不谨慎就会踩得坑 ⊱  如下代码 (看了一下很简单,没毛病啊,老铁) $arr = array( '0'=>'a','1'=>'b','2'=>'c',' ...

  6. day03 变量 运算符 基本数据类型 输出功能 格式化输出

    变量补充 变量的命名 1变量名的命名的大前提:应该能够反映出变量值所记录的状态 具体的1.变量名由字母数字下划线组成 2.不能以数字开头 3.不能使用关键字命名为变量名 两种写法 1.驼峰体(由字母组 ...

  7. 20165206 2017-2018-2 《Java程序设计》第6周学习总结

    20165206 2017-2018-2 <Java程序设计>第6周学习总结 教材学习内容总结 String类:可以被直接使用,不可以有子类. String对象:可以使用String类声明 ...

  8. pandas之whl格式安装

    一.主要介绍linux下安装 1.下载安装包:https://pypi.doubanio.com/simple/pandas/ 2.安装  pip install wheel 3.更新一下pip版本( ...

  9. java编译通过,为什么运行却提示找不到或无法加载主类?

    java编译通过,为什么运行却提示找不到或无法加载主类? https://www.zhihu.com/question/36537093 这边提供一个关于程序中含有package关键字,使用“终端”运 ...

  10. 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化,而报【远程服务器返回错误: (500) 内部服务器错误】

    1. 修改web.config文件可以改变这个默认值(上传1个G) <configuration> <system.web> <httpRuntime maxReques ...