标签: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子目录下面的所有测试用例(不管在那一层)都会执行。
标签:www. 很多 scribe private 执行命令 csharp efi 目的 必须
原文地址:http://www.cnblogs.com/snowy0216/p/7805943.html