在子文件夹中运行mocha测试

时间:2015-03-30 07:51:40

标签: node.js sails.js mocha

我在一些项目中使用Sails.js。现在我写了一些单元测试。我的测试文件夹层次结构如下:

/test
    bootstrat.test.js
    mocha.opts
    /unit
        /controller
            User.js
            Representative.js
        /model
            User.js
            Representative.js
        /service
            Utility.js

为了进行测试,我现在必须运行以下所有命令:

$ mocha test/unit/controller
$ mocha test/unit/model
$ mocha test/unit/service

但这是耗时且过于手动的。我想用一个命令运行所有这些测试并搜索谷歌。我试过运行mocha --recursive test。但它不起作用。它会导致以下错误 -

  1) "before all" hook
  2) "after all" hook

  0 passing (2s)
  2 failing

  1)  "before all" hook:
     Error: timeout of 2000ms exceeded
      at null.<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:159:19)
      at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

  2)  "after all" hook:
     TypeError: Cannot call method 'lower' of undefined
      at Context.<anonymous> (/home/gladiator/Codes/rms-generic-web/test/bootstrap.test.js:21:9)
      at Hook.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:218:15)
      at next (/usr/local/lib/node_modules/mocha/lib/runner.js:259:10)
      at Object._onImmediate (/usr/local/lib/node_modules/mocha/lib/runner.js:276:5)
      at processImmediate [as _immediateCallback] (timers.js:345:15)

有没有办法只用一个命令运行所有这些测试?

2 个答案:

答案 0 :(得分:3)

您是否尝试制作自己的bash脚本?

创建mocha.sh并将其放入其中:

#!/bin/bash

mocha test/unit/controller
mocha test/unit/model
mocha test/unit/service

并使用sh ./mocha.sh

运行它

我不知道摩卡可以用它来做。

答案 1 :(得分:1)

package.json 文件中,只需添加以下内容:

"scripts": {
    "test": "mocha ./test -b -t 10000"
 }

-b在第一次失败后停止测试。

-t是以毫秒为单位的测试用例超时

然后从包含package.json和test文件夹的目录运行npm test命令。它将运行所有测试。