ecmascript测试mocha与jasmine
By admin
npm的包里最常用的两种框架是mocha和jasmine,我最早接触jasmine,但是mocha的使用量好像更普遍.
jasmine是一个运行测试的框架,并自带了一系列的断言方法,用expect(…).to…来实行验证,而且自带了一系列spy方法用来伪造数据,还带了ajax伪造,是一站式解决方案,基本不需要其他测试库补充.
mocha只是一个测试运行框架,并没有带断言方法,需要额外的assert或者推荐的几个chai expect.js should.js来共同运行,而且也没有伪造数据的功能,推荐用sinon.
mocha的it.skip和it.only很有用.jasmine好像只有xit和mocha的skip对应
用了两天决定还是用jasmine了,各种小库都要再看api,不如一揽子都有的jasmine.
jasmine和mocha的运行函数都是describe和it,在这点上是一致的
在node环境下需要测试浏览器,用jsdom或phantomjs来模拟浏览器,或者用karma来加载真实浏览器如chrome或firefox,就不是那么好配置的了.
mocha写的测试,转到jasmine就改改断言就行了,今天遇到个问题原来mocha下运行没错,jasmine下报Uncaught InvalidStateError: Failed to execute ‘dispatchEvent’ on ‘EventTarget’: The event is already being dispatched
最后发现是jasmine下运行事件回调后,回调函数后面的同步代码没有执行完就立即开始第二个测试,所以上一个的document.removeEventListener还没执行清除,导致下一个测试中的mousemove事件被绑定了两次,但之前mocha中就没有发生问题,也许是mocha的执行机制会等待清理代码执行完吧?