单元测试的不少,好比辅助开发,预测开发,提升模块可靠性等。css
还能够提升项目开发思路。html
本文基于nodejs
环境,使用jasmine
参数框架和 Karma
机器人。前端
nodejs
:很少说,很突出。node
jasmine
:老牌js
测试框架,负责单元测试,测试脚本都是根据它的规范进行编写。github
https://github.com/jasmine/jasmine.github.ioweb
Karma
:负责自动化执行测试脚本,批量处理脚本。chrome
http://karma-runner.github.ioshell
npm
npm init
Karma
npm install karma --save-dev
karma-cli
,方便调用karma
npm install karma-cli -g
jasmine
框架支持npm install karma-jasmine --save-dev
jasmine-core
框架核心npm install jasmine-core --save-dev
chrome
浏览器控制器npm install karma-chrome-launcher --save-dev
karma-jasmine-html-reporter
,插件有不少,不必定安装该插件npm install karma-mocha-reporter --save-dev npm install karma-jasmine-html-reporter --save-dev
karma
,生成karma.conf.js
文件,该文件是karma
配置文件karma init
执行后,终端会提示一些信息,一路回车确认便可。npm
配置karma
参数,修改karma.conf.js
文件
// Karma configuration // Generated on Fri Mar 22 2019 10:58:15 GMT+0800 (China Standard Time) module.exports = function (config) { config.set({ // karma 传参数 client: { // jasmine 框架参数 jasmine: { // 随机测试关闭,改成顺序模式 random: false, }, // 不清除结果,直接在浏览器中显示结果 // karma-jasmine-html-reporter 插件参数 clearContext: false }, // 基础路径,用在files,exclude属性上 basePath: './VC', // 测试框架 // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['jasmine'], // 须要加载到浏览器的文件列表 // 好比框架文件,依赖文件,插件 // 被测试的脚本文件 和 对应的测试规范脚本文件 files: [ //包含文件的详细模式。相似地,能够使用其余选项 // 框架文件,依赖文件,插件 中止监控 {pattern: 'PC/Public/Common/JS/AngularJS/1.7.6/angular.min.js', watched: false }, {pattern: 'PC/Public/Common/JS/AngularJS/1.7.6/*.min.js', watched: false }, // 此文件将根据磁盘的要求提供,观察者将忽略该文件 {pattern: 'PC/Public/Common/JS/AngularJS/1.7.6/*.map', included: false, served: true, watched: false, nocache: true }, {pattern: 'PC/Public/Common/JS/AngularJS/1.7.6/angular-mocks.js', watched: false }, {pattern: 'PC/Public/Common/JS/ocLazyLoad/1.1.0/ocLazyLoad.min.js', watched: false }, {pattern: 'PC/Public/Common/JS/layui/2.4.5/layui.js', watched: false }, {pattern: 'PC/Public/Common/JS/layui/2.4.5/lay/modules/*.js', watched: false }, {pattern: 'PC/Public/Common/JS/layui/2.4.5/css/**/*.css', watched: false }, // 自定义类包文件,服务文件, 'PC/Public/Common/JS/CommonJS.js', 'PC/Public/Common/JS/CommonJS.spec.js', 'PC/Public/Common/JS/Service/*.js', 'PC/Public/Common/JS/Service/*/*.js', // 加载全部脚本文件 'PC/Public/Template/**/*.js', // 加载全部 *.spec.js 结尾对测试规范文件 'PC/Public/Template/**/*.spec.js' ], // 排除的文件列表 exclude: [], // 在浏览器使用以前处理匹配的文件 // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: {}, // 使用测试结果报告者 // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['mocha','kjhtml'], // web server port port: 9876, // 启用或禁用输出报告或者日志中的颜色 colors: true, // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_INFO, // 启用或禁用自动检测文件变化进行测试 autoWatch: true, // 测试启动的浏览器 // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['Chrome'], // 开启或禁用持续集成模式 // 设置为true, Karma将打开浏览器,执行测试并最后退出 singleRun: false, // 并发级别(启动的浏览器数) // how many browser should be started simultaneous concurrency: Infinity, // 依赖插件 plugins: [ 'karma-chrome-launcher', 'karma-jasmine', 'karma-mocha-reporter', 'karma-jasmine-html-reporter' ], }) }
karma start karma.conf.js