USAGE

  1. 格式:mocha [debug] [options] [files]
  2. 命令:
  3. init <path> : 生成一个在浏览器中运行的单元测试的模版

当我们运行如下命令的时候:mocha init .会在当前路径中生成一个模版,文件如下:

USAGE - 图1

mocha的命令的基本选项:

  1. Options:
  2. -h, --help 输出帮助信息
  3. -V, --version 输出mocha的版本号
  4. -A, --async-only 强制所有的测试用例必须使用callback或者返回一个promise的格式来确定异步的正确性
  5. -c, --colors 在报告中显示颜色
  6. -C, --no-colors 在报告中禁止显示颜色
  7. -g, --growl 在桌面上显示测试报告的结果
  8. -O, --reporter-options <k=v,k2=v2,...> 设置报告的基本选项
  9. -R, --reporter <name> 指定测试报告的格式
  10. -S, --sort 对测试文件进行排序
  11. -b, --bail 在第一个测试没有通过的时候就停止执行后面所有的测试
  12. -d, --debug 启用nodedebugger功能
  13. -g, --grep <pattern> 用于搜索测试用例的名称,然后只执行匹配的测试用例
  14. -f, --fgrep <string> 只执行测试用例的名称中含有string的测试用例
  15. -gc, --expose-gc 展示垃圾回收的log内容
  16. -i, --invert 只运行不符合条件的测试用例,必须和--grep或--fgrep之一同时运行
  17. -r, --require <name> require指定模块
  18. -s, --slow <ms> 指定slow的时间,单位是ms,默认是75ms
  19. -t, --timeout <ms> 指定超时时间,单位是ms,默认是200ms
  20. -u, --ui <name> 指定user-interface (bdd|tdd|exports)中的一种
  21. -w, --watch 用来监视指定的测试脚本。只要测试脚本有变化,就会自动运行Mocha
  22. --check-leaks 检测全局变量造成的内存泄漏问题
  23. --full-trace 展示完整的错误栈信息
  24. --compilers <ext>:<module>,... 使用给定的模块来编译文件
  25. --debug-brk 启用nodejsdebug模式
  26. --es_staging 启用全部staged特性
  27. --harmony<_classes,_generators,...> all node --harmony* flags are available
  28. --preserve-symlinks 告知模块加载器在解析和缓存模块的时候,保留模块本身的软链接信息
  29. --icu-data-dir include ICU data
  30. --inline-diffs 用内联的方式展示actual/expected之间的不同
  31. --inspect 激活chrome浏览器的控制台
  32. --interfaces 展示所有可用的接口
  33. --no-deprecation 不展示warning信息
  34. --no-exit require a clean shutdown of the event loop: mocha will not call process.exit
  35. --no-timeouts 禁用超时功能
  36. --opts <path> 定义option文件路径
  37. --perf-basic-prof 启用linux的分析功能
  38. --prof 打印出统计分析信息
  39. --recursive 包含子目录中的测试用例
  40. --reporters 展示所有可以使用的测试报告的名称
  41. --retries <times> 设置对于失败的测试用例的尝试的次数
  42. --throw-deprecation 无论任何时候使用过时的函数都抛出一个异常
  43. --trace 追踪函数的调用过程
  44. --trace-deprecation 展示追踪错误栈
  45. --use_strict 强制使用严格模式
  46. --watch-extensions <ext>,... --watch监控的扩展
  47. --delay 异步测试用例的延迟时间

About Babel

如果你在js文件中使用了es6的模块,你可以npm install --save-dev babel-register,然后使用—require选项mocha --require babel-register。如果你指定了文件的后缀名,—compilers选项也是必需的。

-b, --bail


如果你只对第一个异常感兴趣,可以使用这个选项。

-d, --debug


启用nodejs的debug功能。这个选项会用node debug <file>的模式运行你的脚本,所以会在debugger语句处暂停执行。这个选项和mocha debug以及mocha —debug是不同的;mocha debug将会唤起nodejs默认的debug客户端,mocha —debug也可以使用不同的接口,比如--Blink的控制台工具。

--globals names


names是一个逗号分隔的列表,例如,假设你的app需要使用全局变量appYUI,这个时候你就可以使用--global app, YUI了。names也可以是一个通配符。比如,—global ‘*bar’将会匹配foobar,barbar等。参数传入 * 的话,会忽略所有全局变量。

--check-leaks


默认情况下,mocha并不会去检查应用暴露出来的全局变量,加上这个配置后就会去检查,此时某全局变量如果没有用上面的—GLOBALS去配置为可接受,mocha就会报错。

-r, --require module-name


这个命令可以引入一些测试运行时候所必需的依赖。比如should.js,通过这个选项你不需要在每个文件使用require(‘should’)来添加should.js了。也可以用—require ./test/helper.js这样的命令去引入指定的本地模块。
但是,如果要引用模块导出的对象,还是需要require,var should = require(‘should’)这样搞。

-u, --ui name


用来指定测试所使用的接口,默认是’bdd’。

-R, --reporter name


这个命令用于指定报告的格式。默认是spec。这个选项也可以用于指定使用第三方的报告样式。例如,在npm install mocha-lcov-reporter后,就可以使用--reporter mocha-lcov-reporter来指定报告格式。

-t, --timeout ms


用来指定用例超时时间。单位是ms,默认是2s。可以直接使用带单位的时间来覆盖掉默认的单位。例如:—timeout 2s和—timeout 2000是一样的。

-s, --slow ms


用来指定慢用例判定时间,默认是75ms。

-g, --grep


参数用于搜索测试用例的名称(即it块的第一个参数),然后只执行匹配的测试用例。

  1. describe('api', function() {
  2. describe('GET /api/users', function() {
  3. it('respond with an array of users', function() {
  4. // ...
  5. });
  6. });
  7. });
  8. describe('app', function() {
  9. describe('GET /users', function() {
  10. it('respond with an array of users', function() {
  11. // ...
  12. });
  13. });
  14. });

当我们使用--grep api或者--grep app只能运行其中一个对应的测试。