测试工具 mocha 用法小结
In 未分类 on 2015年05月06日 by view: 1,880
0

这篇是前段时间总结给自己备忘的,要用到的工具实在太多,没法一一记住。

个人感觉,作为一个测试的工具,只要会用就好了。

所以这里稍微做了一些修改,简单介绍一下常用的写法和命令,其次将之前的一些示例改成 javascript 版本,方便没有 coffee 基础的同学浏览。

介绍

mocha 是一个拥有丰富功能的 javascript 测试框架,可以用于 nodejs 和浏览器。支持同步/异步测试用例,有多种报告形式。

官网介绍了很多的特性,个人感觉实用的就几点:

一个是 nodejs 和浏览器都可以用,不用再记那么多奇怪的 api 和写法了。

其次是编写同步/异步测试用例非常简单。

安装

成功安装后就可以使用 mocha 命令了。

使用

运行./test/目录所有 js

指定 js 文件

监听文件变化

指定 coffee 编译

for coffescript 1.6

for coffeescript 1.7+

浏览器的使用

指定一个目录,初始化一个用于浏览器的测试目录。执行后会在该目录生成 index.htmlmocha.jsmocha.css 和一个空白的 test.js,可以直接在 test.js 中添加测试用例。

当然,也可以不敲命令直接复制引用 mocha.js 到 html。

编写用例

常用的断言库都可以运行的很好。以下列出几个:

  • should.js BDD style shown throughout these docs.
  • chai expect() assert() and should style assertions
  • expect.js expect() style assertions
  • better-assert c-style self.documenting assert()

个人一般用 nodejs 自带的 assert(方便不用安装)和 should.js(功能强大很好用)

同步代码

异步代码

写法和同步代码类似,只是在 it()的第二个参数的函数参数中传入一个 done 函数,用于控制异步函数的结束。

其中,done()函数也可以接受一个 error 作为参数,所以上面其实可以简化为:

hooks

mocha 支持多种体位的 hook,用法做一些或者干掉一些东东。如下:

  • before() 开始前 1 次
  • after() 结束后做 1 次
  • beforeEach() 开始前每次都做
  • afterEach() 每次结束后都做

所有的 hooks 都可以接收 done()参数用于异步结束。甚至可以不使用 done 参数,而是直接返回一个 promise 对象,例如:

不过建议还是加上 done 参数,看起来清晰,习惯统一。

BDD 和 TDD

现在一般都用 BDD。

BDD interface 提供了 describe(),context(),it(),before(),after(),beforeEach(),afterEach()。

context() 和 describe() 没区别。

TDD interface 提供了 suite(),test(),suiteSetup(),suiteTeardown(),setup(),teardown()

其他常用

-b 参数 只显示第一个异常

一般测试用例多的时候非常有用,不然某个接口变化全屏报错就悲剧了

-t 参数 指定单个测试用例的超时时间

默认单个测试用例超时时间为 2000ms。

命令行中添加为全局的设置,也可以在测试用例内部调用 timeout()方法单独控制。

ok,介绍到此就结束了,最后附上其他命令速查

其他命令行

  • -h,—help
  • -V,—version
  • -A,—async-only 强制为异步模式,即所有测试必须包含一个 done() 回调。
  • -c,—colors
  • -C,—no-colors
  • -G,—growl
  • -O,—reporter-options
  • -R,—reporter
  • -S,—sort
  • -b,—bail
  • -d,—debug
  • -g,—grep
  • -f,—fgrep
  • -gc,—expose-gc
  • -i,—invert
  • -r,—require
  • -s,—slow
  • -t,—timeout 设置超时,默认为 2000ms,如果是长时间运算需要设置。
  • -u,—ui
  • -w,—watch 监视文件变化
  • —check-leaks
  • —compilers :,… 使用指定模块编译文件,经常会用到编译 coffee
  • —debug-brak
  • —globals
  • —inline-diffs
  • —interfaces
  • —no-deprecation
  • —no-exit
  • —no-timeouts
  • —opts
  • —prof
  • —recursive
  • —reporters
  • —throw-deprecation
  • —trace
  • —trace-deprecation
  • —watch-extensions ,…
  • —delay

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2015/05/%e6%b5%8b%e8%af%95%e5%b7%a5%e5%85%b7mocha%e7%94%a8%e6%b3%95%e5%b0%8f%e7%bb%93/

发表评论