我有一个node.js / express / mocha项目。从我的项目的根目录,我做的
./node_modules/.bin/mocha --compilers coffee:coffee-script-redux/register test/**/*.coffee --reporter list
1) UnitsController /units.json "before all" hook
․ CordBloodUnit should set attrs: 0ms
․ CordBloodUnit #getMatchCount should get the match count of alleles: 0ms
․ pg-adapter #runQuery should get results of the query: 7ms
․ pg-adapter #runQuery should get Cord Blood Units: 4ms
4 passing (2s)
1 failing
1) UnitsController /units.json "before all" hook:
Error: timeout of 2000ms exceeded
at Object.<anonymous> (/Users/pguruprasad/Projects/jeevan-js/node_modules/mocha/lib/runnable.js:175:14)
at Timer.list.ontimeout (timers.js:101:19)
我看到所有的测试都在运行。但是当我想将long命令放在脚本中执行时,mocha只运行两次测试并忽略其余的。这可能有什么问题?
➜ ~jjs git:(master) ✗ touch test1
➜ ~jjs git:(master) ✗ echo "./node_modules/.bin/mocha --compilers coffee:coffee-script-redux/register test/**/*.coffee --reporter list" >> test1
➜ ~jjs git:(master) ✗ cat test1
./node_modules/.bin/mocha --compilers coffee:coffee-script-redux/register test/**/*.coffee --reporter list
➜ ~jjs git:(master) ✗ chmod +x test1
➜ ~jjs git:(master) ✗ ./test1
․ CordBloodUnit should set attrs: 0ms
․ CordBloodUnit #getMatchCount should get the match count of alleles: 0ms
2 passing (2ms)
答案 0 :(得分:1)
您的问题很可能是脚本运行的路径或环境变量不同。它可能正在运行全局mocha而不是项目中安装的mocha,或者它可能有不同的cwd。
我强烈建议将以下内容添加到package.json的脚本部分:
"scripts": {
"test": "mocha --compilers coffee:coffee-script-redux/register test/**/*.coffee --reporter list",
}
然后,您可以使用npm test
轻松访问此内容。请注意,npm始终运行本地安装,而不是全局mocha。它还允许您执行诸如运行多个脚本之类的聪明操作,如How to run mocha and mocha-phantomjs tests from one "npm test" command in node.js?中所示。最后,它在Windows以及Unix和OS X中可靠地运行。
答案 1 :(得分:0)
尝试./node_modules/.bin/_mocha
答案 2 :(得分:0)
确保所有测试文件都具有 .coffee 扩展名,而不是 .js 。我喜欢做的一件事是,将所有测试都放在这个模式名称中: my_file_test.coffee 。全部使用 _test.coffee 。
答案 3 :(得分:-1)
这也发生在我身上,问题实际上是我有一个describe()
阻止,其中没有it()
个调用。希望能帮助别人!