测试框架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的更多相关文章

  1. 学习测试框架Mocha

    学习测试框架Mocha 注意:是参考阮老师的文章来学的.虽然阮老师有讲解,但是觉得自己敲一遍,然后记录一遍效果会更好点.俗话说,好记性不如烂笔头. Mocha 是javascript测试框架之一,可以 ...

  2. 转载自-阮一峰-测试框架 Mocha 实例教程

    测试框架 Mocha 实例教程   作者: 阮一峰 日期: 2015年12月 3日 Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏 ...

  3. 前端测试框架Jest系列教程 -- Expect(验证)

    写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多“Matchers”,这些“匹配器”允许您验证不同的东西. Expect 可以验证什么 Jest中 ...

  4. javascript测试框架mocha

    node测试框架mocha 简单.灵活.有趣,mocha是一个功能丰富的javascript测试框架,运行在node和浏览器中,使异步测试变得更加简单有趣.http://mochajs.org/ 安装 ...

  5. NodeJs下的测试框架Mocha

    介绍和代码下载 Mocha在2011年发布,是目前最为流行的javascript框架之一,在本文我们重点介绍它在NodeJs上的使用. 如果你需要下载实例代码,可以通过这个链接 gitClone 或者 ...

  6. 测试框架 Mocha 实例教程(转载:来自阮一峰的一篇文章)

    Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用. 所谓"测试框架",就是运行测试的 ...

  7. 测试框架Mocha

    NodeJS里最常用的测试框架估计就是mocha了.它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript ...

  8. 测试驱动开发(TDD)及测试框架Mocha.js入门学习

    组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅 ...

  9. javascript测试框架 Mocha 实例教程

    http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html

随机推荐

  1. iTunes使用总结

    UDID查询 将设备连接至电脑,打开iTunes至设备摘要页面,鼠标点击"序列号"区域切换显示UDID

  2. 【NEUQACM OJ】1017: 平面切割(特别版)

    1017: 平面切割(特别版) 题目描述 我们要求的是n条闪电型折线分割平面的最大数目.比如,一条闪电型折线可以将平面分成两部分,两条最多可以将平面分成12部分,三条最多可将平面分成31部分,四条最多 ...

  3. yum 只下载不安装

    以下载busybox为例 1.首先确定有yumdownloader 这个软件,这个软件在yum-utils 工具包里面. # rpm -qa |grep yum-utils # yum -y inst ...

  4. GADL配置编译

    GADL配置编译 文章1:Win7(32/64)VS2010配置编译GDAL环境(图文教程+亲测可用!) 转载:http://malagis.com/win7-vs2010-gdal.html 近的一 ...

  5. Ubuntu环境变量(.profile)加载顺序

    Ubuntu下启动的时候的的加载环境变量的过程大致为: /etc/enviroment /etc/profile   -->/etc/bash.bashrc   --> /etc/prof ...

  6. .Net程序员之不学Java做安卓开发:Android Studio中的即时调试窗口

    对学.Net的人来说,JAVA开发是一场噩梦. .net中的即时窗口,调试时直接在里面写代码,对程序中的各种方法/属性进行调用,很方便. Android Studio中找了好久,参考如下网址,也有类似 ...

  7. python 中使用 global 引发了莫名其妙的问题

    哪里出问题了 python 中,使用 global 会将全局变量设为本函数可用.同时,在函数内部访问变量会先本地再全局. 在嵌套函数中,使用 global 会产生不合常理的行为. 上代码: In [9 ...

  8. 百度Ueditor配置问题

    var URL = window.UEDITOR_HOME_URL || getUEBasePath(); 在ueditor.config.js中这一句是配置编辑器的网站根目录位置的,建议不要改,网上 ...

  9. C++哈夫曼树编码和译码的实现

    一.背景介绍: 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值较大的 ...

  10. 第一章-第十三题(该游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素有没有考虑到?)--By梁旭晖

    这款软件无疑是一个好软件,软件的开发者是有相当水平的,可以说是优秀的软件编写人员,但是也只是优秀的软件人员,术业有专攻,他们在其他方面我觉得是有很大的欠缺的. 我觉得,他们并没有抓住消费者的心理,首先 ...