1 jasmine和mocha 是写单元测试的框架,分别对同步函数和异步函数由良好的支持
Jasmine就是一种
JavaScript
单元测试框架,它不依赖任何其他JS框架,也不需要对DOM操作,具有灵巧而明确的语法可以让你轻松的编写测试代码。它是一套Javascript行为驱动开发框架(BDD),干净简洁,表达力强且易于组织,不依赖于其他任何框架和DOM,可运行于
Node.js
,浏览器端或移动端
2 karma 是运来跑测试的驱动,可以跑各种各样的测试 单侧或者 endtoend 测试
3 Sinon
具有独立的spies, stub, mock功能,Sinon
并不是独立的测试框架,它只是在测试中提供了上述的三种功能, 例如我们常用的测试框架Mocha,Sinon
并不能完全替代Mocha
的功能。
发现sinon 中文api 不多啊
顾名思义,spies我们干脆就把它称作间谍函数好了,间谍函数是Sinon最简单的部分,其它的功能都是建立在spies之上的,
spies的主要用途是收集有关函数调用的信息。您还可以使用它们来帮助验证事物,例如是否调用了函数等。
就像电影《窃听风云》中一样,监听房间内都有那些人进出,做了什么事,而且这个监听过程是不会房间内的人感知的。
同样spies的实现监听的基础上是不会影响函数本身的正常调用(被监听的函数的上下文关系不会被影响)。
当然我们实现是需要在房间里偷偷的安装窃听器的, 那么spies的窃听器是如何实现的呢?后文我们有介绍
stub的概念
他们拥有spies的所有功能,不是监视某个函数的调用情况,而是完全取代了这个函数。换句话说,当使用spies时,
原始函数仍然运行,但是当使用stub时,函数将不具有原始的功能,而是替换后的函数。
mock的概念
mock与stub的功能一样都是用来替换指定的函数,如果你想替换掉一个对象中的多个方法,
这时mock就可以发挥作用了,但是如果仅仅是替换对象中的一个函数,
那么stub更加简单易用,当我们使用mock的时候应该十分小心,因为大量的替换原有代码逻辑,会导致test变的脆弱,