使用mocha编写pomelo项目的单元测试

本文详细解析了Mocha框架中单元测试的执行顺序规则,包括不同层级的describe块及hooks钩子函数的执行顺序,并提供了示例代码帮助理解。

         怎么安装就略去了,这个比较简单。使用方法也比较简单,网上教程也比较多。这也只是总结下自己写单元测试时遇到的问题。

         刚开始写单元测试时,出现了比较奇怪的问题,总是达不到自己想要的效果。根源还是对于mocha的执行时序的不了解。这里总结了下执行时序的资料如下:

describe里地时序

simple case

describe('work',function(){
    it('1',func(){});
    it('2',func(){});
    ....
});

//按1,2,3...顺序执行

规则1:describe里地it的非异步部分按它们定义的顺序执行,它们所触发的回调的注册顺序也遵从it的注册顺序

如果是这样的case:

describe('work',function(){
	{block1}
it('1',func(){});
{block2}
it('2',func(){});
{block3}
    ....
});


执行顺序应该是block1 block2 block3 it1 it2这样。这里要说的是一个it应该是对应一个实际的testcase。所以要注意和本test case相关的代码一定要放到it的回调里面去,不让就会出现莫名奇妙的错误。

hooks

•       before

•       after

•       beforeEach

•       afterEach


这是比较常用的hooks,我们可以采用hooks改变在describe中的时序,但是记住hooks是在describe的基础上的,与describe联系在一起的。hooks对子describe是不起作用的。

describe间的时序

非describe部分

规则2:不被describe包裹的部分执行顺序的优先级最高

{block1}
describe('1',function(){
   ...
});
{block2}
describe('2',func(){..});

//执行顺序block1,block2,describe1,describe2

并列的describe

规则3:同一层次的describe执行顺序遵从它们的定义顺序

嵌套的describe

describe('parent',func(){
   it('1',func(){..});
   describe('child1',func(){...});
   it('2',func(){...});
   describe('child2',func(){..});
});

//执行顺序为it1,it2,child1,child2

规则4:外层describe的所有it执行优先级高于嵌套的describe

总结

最后我们把这四条规则总结一下

•       describe里地it的非异步部分按它们定义的顺序执行,它们所触发的回调的注册顺序也遵从it的注册顺序

•       不被describe包裹的部分执行顺序的优先级最高

•       同一层次的describe执行顺序遵从它们的定义顺序

•       外层describe的所有it执行优先级高于嵌套的describe

 

参考自:http://segmentfault.com/a/1190000002448251


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值