测试框架Mocha与断言expect
测试框架Mocha与断言expect
在浏览器和Node环境都可以使用
除了Mocha以外,类似的测试框架还有Jasmine、Karma、Tape等,也很值得学习。
整个项目源代码:
为什么学习测试代码?
1. react的开发不适合网页端的调试和测试
2. 把关所写代码质量,防止bug和漏洞
要测试的文件add.js
测试文件命名为:add.test.js或者add.spec.js
测试脚本可以独立运行。
测试脚本里包含一个或多个describe块,每个describe块应该包括一个或多个it块
add.test.js:
var add = require('./add.js'); var expect = require('chai').expect; // 引入断言库,引入的断言库是chai,并且指定使用它的expect风格 describe('加法的测试', function () { it('1 + 1应该等于2', function () { expect(add(1, 1).to.be.equal(2)); // 断言 }); });
断言: 判断源码的执行结果与预期是否一致,如果不一致就抛出一个错误
所有的测试用例(it块)都应该含有一句或多句的断言。
// 执行测试脚本
mocha add.test.js
expect断言例子:
// 相等或不相等 expect(4 + 5).to.be.equal(9); expect(4 + 5).to.be.not.equal(10); expect(foo).to.be.deep.equal({ bar: 'baz' }); // 布尔值为true expect('everthing').to.be.ok; expect(false).to.not.be.ok; // typeof expect('test').to.be.a('string'); expect({ foo: 'bar' }).to.be.an('object'); expect(foo).to.be.an.instanceof(Foo); // include expect([1,2,3]).to.include(2); expect('foobar').to.contain('foo'); expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo'); // empty expect([]).to.be.empty; expect('').to.be.empty; expect({}).to.be.empty; // match expect('foobar').to.match(/^foo/);
// mocha测试多个脚本
mocha file1.test.js file2.test.js file3.test.js
Mocha默认运行test子目录里面的测试脚本。
所以,一般都会把测试脚本放在test目录里面,然后执行mocha测试代码
// 执行默认test里的测试脚本
mocha
mocha --watch
测试项目地址:
https://github.com/liuqiuchen/myMocha
测试项目下载之后,在cmd里执行cnpm install,然后先执行cnpm run babel,再执行mocha
测试结果在浏览器端显示:
// 在指定目录testBrowser生成html文件
mocha init testBrowser
对生成的html做适当的修改:
<!DOCTYPE html> <html> <head> <title>Mocha</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="mocha.css" /> </head> <body> <div id="mocha"></div> <script src="mocha.js"></script> <script>mocha.setup('bdd');</script> <!-- 引入要测试的文件 --> <script src="add.js"></script> <!-- 引入断言 http://chaijs.com/chai.js--> <script src="chai.js"></script> <!-- 在tests.js里写测试代码 --> <script src="tests.js"></script> <script> mocha.run(); </script> </body> </html>
添加代码到add.js、tests.js。详细参见:https://github.com/liuqiuchen/myMocha
// 生成规格文件
mocha --recursive -R markdown > spec.md
// 生成html格式的规格文件
mocha --recursive -R doc > spec.html
测试框架Mocha与断言expect的更多相关文章
- 学习测试框架Mocha
学习测试框架Mocha 注意:是参考阮老师的文章来学的.虽然阮老师有讲解,但是觉得自己敲一遍,然后记录一遍效果会更好点.俗话说,好记性不如烂笔头. Mocha 是javascript测试框架之一,可以 ...
- 转载自-阮一峰-测试框架 Mocha 实例教程
测试框架 Mocha 实例教程 作者: 阮一峰 日期: 2015年12月 3日 Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏 ...
- 前端测试框架Jest系列教程 -- Expect(验证)
写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多“Matchers”,这些“匹配器”允许您验证不同的东西. Expect 可以验证什么 Jest中 ...
- javascript测试框架mocha
node测试框架mocha 简单.灵活.有趣,mocha是一个功能丰富的javascript测试框架,运行在node和浏览器中,使异步测试变得更加简单有趣.http://mochajs.org/ 安装 ...
- NodeJs下的测试框架Mocha
介绍和代码下载 Mocha在2011年发布,是目前最为流行的javascript框架之一,在本文我们重点介绍它在NodeJs上的使用. 如果你需要下载实例代码,可以通过这个链接 gitClone 或者 ...
- 测试框架 Mocha 实例教程(转载:来自阮一峰的一篇文章)
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用. 所谓"测试框架",就是运行测试的 ...
- 测试框架Mocha
NodeJS里最常用的测试框架估计就是mocha了.它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript ...
- 测试驱动开发(TDD)及测试框架Mocha.js入门学习
组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅 ...
- javascript测试框架 Mocha 实例教程
http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html
随机推荐
- iOS APP性能优化
:应用启动时间 应用启动时,只加载启动相关的资源和必须在启动时加载的资源. :本地图片加载方式 本地图片加载常用方法有两种: a. [UIImage imageNamed:@"xx.png& ...
- iOS Swift 数组 交换元素的两种方法
swap(&arr[fromIndexPath.row], &arr[to.row]) (arr[fromIndexPath.row],arr[to.row]) = (arr[to.r ...
- 二分 题目 压缩打包 Special Judge? 不不不 当然不是
http://noi.openjudge.cn/ch0111/ No 题目 分数 01 查找最接近的元素 10 3176 02 二分法求函数的零点 10 2181 03 矩形分割 10 1420 04 ...
- 我对 Java 标识符的分类命名方法
我对 Java 的各种标识符有一套固定的分类方法,以下分享一下我的命名方法以及进行一些说明. # 前缀: 方法 方法:f_doSomeThing().分类词是 f,采自 [f]unction 方法,也 ...
- spring3.0使用annotation完全代替XML
@Service与@Component有什么不同?那天被问到这个问题,一时之间却想不起来,就利用这篇文章来纪录spring3.0中常用的annotation. 从spring2.5开始,annotat ...
- Files 的值“<<<<<<< .mine”无效。路径中具有非法字符
解决冲突,告诉SVN这个问题已解决(Resolved). 一般更简单些:在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有'& ...
- 通读SDWebImage①--总体梳理、下载和缓存
本文目录 下载操作SDWebImageDownloaderOptions和下载过程实现 下载管理SDWebImageDownloader 缓存SDImageCache SDWebImageManage ...
- Jenkins部署配置简介
前段时间研究了一下自动化测试,因而接触到了Jenkins,今天有时间进行一下Jenkins部署配置相关知识的总结分享 前言:由于本次只是实验性研究,采用Windows环境,因此Jenkins可以通过下 ...
- jQuery中事件与动画的总结
1.加载DOM 1.1.window事件 window.onload=function(){}.... 时机:其他资源都加载完毕后,再执行 $(function(){}) ……:只是 ...
- Spring MVC的配置文件(XML)的几个经典案列
1.既然是配置文件版的,那配置文件自然是必不可少,且应该会很复杂,那我们就以一个一个的来慢慢分析这些个经典案列吧! 01.实现Controller /* * 控制器 */ public class M ...