一、起因

  在#单元测试#以karma+mocha+chai 为测试框架的Vue webpack项目(一)文中,说明了是对已有的Vue项目进行测试框架的搭建,并进行测试。但是此项目在利用 vue-cli 创建时并没有安装 unit 测试和 jest 工具,于是造成了karma start 测试运行时的一些错误。本文意在解决主要的错误。

二、错误论述

共有两个大错误:
 1、关于mocha关键字未定义的错误

Error:describe is not define  

         Error:it is not define

2、关于 fs 的错误

Error:Can't resolve ‘fs’ in ‘.......path......’

三、解决方法

1、解决mocha关键字未定义的错误

(1) 猜测错因:

既然识别不了mocha语法,但是又安装成功了,猜测配置文件出错或者webpack编译时识别不了mocha。

(2) 调查错误:

在测试脚本编写 require('mocha'),以便对‘mocha’进行Ctrl+鼠标左键能快速进入它的module index文件。

发现此文件后缀名是.ts,表示是一个typescript文件,而非js文件。由于项目中并没有引进typescript,故而编译不了它。需要引进能够编译 ts 文件的工具。

因为缺失vue的 unit测试工具 和 jest 工具才导致的错误,那么必然是它们已经帮我们做了支持 ts 文件的工作。百度了一下,应该是 jest 的作用,它支持ts。接下来就需要安装 jest相关插件 && 设置配置文件了。

(3) 解决:

安装jest 和 babel-jest :

  1. #npm install jest --save-dev
  2. #npm install babel-jest --save-dev

   配置文件: 

在 /test/unit/ 目录下新建三个配置文件【jest.conf.js   setup.js    .eslintrc】,我是直接从之前能正确运行的demo中拷贝过来的:

①  /test/unit/jest.conf.js

  1. const path = require('path')
  2.  
  3. module.exports = {
  4. rootDir: path.resolve(__dirname, '../../'),
  5. moduleFileExtensions: [
  6. 'js',
  7. 'json',
  8. 'vue'
  9. ],
  10. moduleNameMapper: {
  11. '^@/(.*)$': '<rootDir>/src/$1'
  12. },
  13. transform: {
  14. '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
  15. '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
  16. },
  17. testPathIgnorePatterns: [
  18. '<rootDir>/test/e2e'
  19. ],
  20. snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
  21. setupFiles: ['<rootDir>/test/unit/setup'],
  22. mapCoverage: true,
  23. coverageDirectory: '<rootDir>/test/unit/coverage',
  24. collectCoverageFrom: [
  25. 'src/**/*.{js,vue}',
  26. '!src/main.js',
  27. '!src/router/index.js',
  28. '!**/node_modules/**'
  29. ]
  30. }

②  /test/unit/setup.js

  1. import Vue from 'vue'
  2.  
  3. Vue.config.productionTip = false

③  /test/unit/.eslintrc

  1. {
  2. "env": {
  3. "jest": true
  4. },
  5. "globals": {
  6. }
    }

目录结构:

      

(4) 运行karma:

#karma start

不再报 Error:describe is not define  错误,但是出现了Error:Can't resolve ‘fs’ in ‘.......path......’错。解决它请继续阅读。

2、解决fs的错误

修改webpack的配置文件,增加:

  1. node: {
  2. fs: 'empty'
  3. },

/bulid/webpack.base.conf.js: 

 

问题解决完了,此时再 karma start就不会报错了,会显示执行成功的消息。

解决未安装unit测试和jest的Vue项目运行karma start时的错误的更多相关文章

  1. Linux下Vue项目搭建karma测试框架

    前提:vue项目已创建,node.js.npm已安装 1.全局安装karma脚手架 karma-cli  [貌似可以不安装] #npm i -g karma-cli 2.转到Vue项目目录,项目下安装 ...

  2. 安装Node,创建vue项目,运行及打包

    1.安装node js 下载地址:http://nodejs.cn/download/ 2.安装完成后运行Node.js command prompt(node -v查看安装版本) 3.安装npm(由 ...

  3. 使用nodeJs安装Vue-cli并用它快速构建Vue项目

    部分摘自:http://www.cnblogs.com/wisewrong/p/6255817.html(已在本地测试) 前提:nodeJs本地已安装. 一.安装 vue-cli 1.使用nodeJs ...

  4. vue全家桶安装以及修改webpack配置新增vue项目启动方式

    一.安装node环境(自带npm) 下载地址 二.替换下载源 // 淘宝 NPM 镜像 npm install -g cnpm --registry=https://registry.npm.taob ...

  5. 安装VM虚拟机提示 尝试创建目录 C:\Public\documents\SharedVirtual Machines 时发生错误解决方法

    把Windows Defender安全中心的“受控制文件夹的访问”给关闭了,然后就可以顺利安装上了. 作者:耑新新,发布于  博客园 转载请注明出处,欢迎邮件交流:zhuanxinxin@foxmai ...

  6. centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目

    一.购买服务器并远程连接 1.购买服务器和域名 可以选择阿里云或者是其他的厂商的服务器.然后会获得服务器ip地址,用户名和密码. 购买域名,将域名绑定到ip地址上. 2.下载xshell,winscp ...

  7. 我的Android进阶之旅------>Android项目运行报java.lang.NoClassDefFoundError错误的解决办法

    今天在运行一个Android项目的时候,报了以下错误: D/AndroidRuntime( 3859): Shutting down VM E/AndroidRuntime( 3859): FATAL ...

  8. ubuntu安装多个qt版本--不同qt版本编译同一个程序时出现错误--解决方案

    方法: 在ubuntu终端: # make clean   //有Makefile文件的情况 # rm Makefile *.pro.user # qmake  //有多个qt版本,最好指定qmake ...

  9. 安装好maven后,在cmd中运行mvn报一下的错误

    当然报错,你这个路径下并没有pom.xml文件.你可以运行这个命令: mvn -version.

随机推荐

  1. 洛谷 P1800 software_NOI导刊2010提高(06)

    题目链接 题解 二分答案+dp 如果我们知道答案,贪心地想,让每个人做尽量多的模块一定不会比最优解差 \(f[i][j]\)表示前\(i\)个人第一个模块做了\(j\)块,第二个模块最多能做多少 然后 ...

  2. 51Nod-1259-整数划分 V2

    51Nod-1259-整数划分 V2 将N分为若干个整数的和,有多少种不同的划分方式,例如:n = 4,{4} {1,3} {2,2} {1,1,2} {1,1,1,1},共5种.由于数据较大,输出M ...

  3. python内置函数一

    ⼀. 本节主要内容:1. 内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print., input等等. 截⽌到python版本3.6.2 python⼀共提供了6 ...

  4. linux下解压rar文件

    由于,linux系统内置没有这个包需要,我们用源码,添加到系统 Linux下rar unrar的安装 以3.8.0版本为例,如果是64位平台,执行以下命令,也可以去官方网站:)下载最新版:wget h ...

  5. [转] docker基础知识之挂载本地目录

    [From] https://blog.csdn.net/huludan/article/details/52641090 https://my.oschina.net/piorcn/blog/324 ...

  6. nodejs下载器,通过chrome代理下载http资源

    var config={ //不想访问的东西,节约流量 "404":[ "http://qidian.qpic.cn/qdbimg" ], //奇数为需要下载的 ...

  7. b站弹幕的爬取以及词云的简单使用

    一.B站弹幕的爬取 1.分析发现,其弹幕都是通过list.so?=cid这个文件加载出来的,所以我们找到这个文件的请求头的请求url, 2. 打开url就能看到所有的评论 3. 上代码,解析 #!/u ...

  8. python3.6 子类的__init__调用父类的__init__

    python3.6 子类的__init__调用父类的__init__ 父类 class worker: def __init__(self): self.a=1 self.b=2 if __name_ ...

  9. javascript 定时任务封装

    /** * 定时任务 * 间隔时间,执行次数,要带的参数,要执行的函数. */ var TimingTask = function(time,count,param,fun){ this.id = - ...

  10. fixed

    之前我们见的fixed就是固定在低端.后来我遇到一个问题 如果  这样写: div{ position: fixed; left: 0; bottom: 0; } 内容吧div撑开,有多少算多少 di ...