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

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

         刚开始写单元测试时,出现了比较奇怪的问题,总是达不到自己想要的效果。根源还是对于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


你可能感兴趣的:(使用mocha编写pomelo项目的单元测试)