码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript-测试框架:Mocha

时间:2017-11-08 20:54:41      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:www.   很多   scribe   private   执行命令   csharp   efi   目的   必须   

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

一、安装环境:工欲善其事,必先利其器!

1. Node.js的安装:

(1)windons环境下:下载Node.js安装包 -> 安装;

命令行窗口:node --version 检查是否安装 

2. npm的安装:

(1)npm install

(2)0node.js包管理工具npm安装模块后,无法通过命令行执行命令,提示‘xxx’ 不是内部或外部命令的解决方法:一般出现这样的问题原因是npm安装出现了问题,全局模块目录没有被添加到系统环境变量。

(3)Windows用户检查下npm的目录是否加入了系统变量PATH中,如果不存在需要手动添加,添加之后需要重新启动CMD控制台。

(4)nodejs模块全局目录环境变量,npm目录可以使用npm命令去查找:npm config get prefix

(5)安装报错:npm warn package.json @1.0.0 no repository field. 看字面意思大概是package.json里缺少repository字段,也就是说缺少项目的仓库字段。

{
    ...
    "repository": {
        "type": "git",
        "url": "http://baidu.com"
    },
    ...
}
但作为测试项目或者练习用,只需在package.json里面做如下配置即可:
{
    ...
    "private": true,
    ...
}
以这种方式把项目声明为私有。

3. mocha全局变量安装:

(1)npm install --global mocha

 

二、mocha测试框架demo运行

1. 所谓测试框架,也就是“运行测试的工具”。

2. Mocha是Javascript测试框架之一,它的作用是运行测试脚本,所谓“测试脚本”,就是用来测试源代码的脚本。

 

三、测试脚本的写法

1.Mocha的作用是运行测试脚本,下面是一个加法模块的代码

// add.js
function add(x, y){
   return x + y;
}

modul.exports = add;

(1)要测试这个加法模块是否正确,就要写测试脚本。

(2)通常,测试脚本与所要测试的源码脚本同名,但是后缀名为.test.js(表示测试)或者.spec.js(表示规格)。比如,add.js的测试脚本名字就是:add.test.js。

// add.test.js
var add = require(‘./add.js‘);
var expect = require(‘chai‘).expect;

describe(‘加法函数的测试‘, function(){
    it(‘1加1应该等于2‘, function(){
       expect(add(1,1).to.be.equal(2));
    });
});

(3)上面这段代码,就是测试脚本,可以独立运行。

(4)测试脚本应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。

(5)describe块称为“测试套件”(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(“加法函数的测试”),第二个参数是一个实际执行的函数。

(6)it块称为“测试用例”(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用来的名称(“1加1应该等于2”),第二个参数是一个实际执行的函数。

 

四、断言库的用法

expect(add(1,2).to.be.equal(2));//断言

(1)所谓“断言”,就是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。上面这句断言的意思是,调用add(1, 1),结果应该等于2。

(2)所有测试用来(it块)都应该包含有一句或多句的断言。它是编写测试用例的关键。断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。

var expect = require(‘chai‘).expect;

(3)断言库有很多种,Mocha并不限制使用哪一种。上面代码引入的断言库是chai,并且指定使用它的expect断言风格。

(4)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(‘everything‘).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.kes(‘foo‘);

//empty
expect([]).to.be.empty;
expect(‘‘).to.be.empty;
expect({}).to.be.empty;

//match
expect(‘foobar‘).to.be.match(/^foo/);

(5)基本上,expect断言的写法都是一样的。头部是expect方法,尾部是断言的方法,比如equal、a/an、ok、match等。两者之间是用to或者to.be链接;

(6)expect断言不成立,就会抛出一个错误。事实上,只要不抛出错误,测试用例就算通过。

it(‘1加1应该等于2‘, function(){});

(7)上面的这个测试用例,内部没有任何代码,由于没有抛出错误,所以还是通过;

五、Mocha的基本用法

有了测试脚本以后,就可以用Mocha运行它。

$ mocha add.test.js

  加法函数的测试
    ? 1 加 1 应该等于 2

  1 passing (8ms)

(1)上面的运行结果表示,测试脚本通过了测试,一共只有一个测试用例,耗时是8毫秒。

(2)Mocha命令后面紧跟测试脚本的路径和文件名,可以指定多个测试脚本:

$ mocha file1 file2 file3

(3)Mocha默认运行test子目录里面的测试脚本。所以,一般会把测试脚本防止test目录里面,然后执行mocha就不需要参数了,进入子目录,输入mocha命令运行即可;

(4)打开test子目录,会发现还有一个test/dir子目录,里面还有一个测试脚本multiple.test.js,并没有得到执行。因为Mocha默认只执行test子目录下面的第一层的测试用例,不会执行更下层的用例。为了改变这种行为,就必须加上--recursive参数,这时test子目录下面的所有测试用例(不管在那一层)都会执行。

 

JavaScript-测试框架:Mocha

标签:www.   很多   scribe   private   执行命令   csharp   efi   目的   必须   

原文地址:http://www.cnblogs.com/snowy0216/p/7805943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!