怎么安装就略去了,这个比较简单。使用方法也比较简单,网上教程也比较多。这也只是总结下自己写单元测试时遇到的问题。
刚开始写单元测试时,出现了比较奇怪的问题,总是达不到自己想要的效果。根源还是对于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