Grunt-Mocha`PhantomJS超时了

时间:2014-07-18 11:04:51

标签: javascript gruntjs phantomjs mocha

我在从grunt运行我的mocha测试时不断收到此消息。

Warning: PhantomJS timed out, possibly due to a missing Mocha run() call. Use --force to continue.

测试在浏览器中运行良好,但是它们无法从grunt开始。我一直在使用this Grunt插件来运行我的浏览器测试,而这是我的Gruntfile.js的相关部分。

// I've checked if it does server while my tests are running & it does
connect: {
  test: {
    // public is where all my files are, of course
    base: 'public', 
    port: 8080
  }
},

mocha: {
  client: {
    urls: ['http://0.0.0.0:8080/test.html'],
    log: true,
  }
},

这里是test.html文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Mocha Tests</title>
    <link rel="stylesheet" href="css/mocha.css" />
  </head>
  <body>
    <div id="mocha"></div>
    <script src="js/test.js"></script>
    <script>mocha.run();</script>
  </body>
</html>

这里是public目录

/public
- index.html
- test.html
 /css
  - main.css
  - mocha.css
 /js
  - main.js
  - test.js \\ contains main.js + mocha.js + my tests

这里是grunt的输出,直到失败。

Running "uglify:dev" (uglify) task
File public/js/main.js created.
File public/js/test.js created.

Running "connect:test" (connect) task
Started connect web server on http://0.0.0.0:8080

Running "mocha:client" (mocha) task
Testing: http://0.0.0.0:8080/test.html

Warning: PhantomJS timed out, possibly due to a missing Mocha run() call. Use --force to continue.

Aborted due to warnings.

测试所需的所有src都放在一个文件中,它包含我的源代码(以及它的依赖项),mocha和测试。

2 个答案:

答案 0 :(得分:4)

不知道它是否仍与您相关,但以防其他人遇到此问题: 在我的例子中,如果我从命令行直接调用它们,测试工作完全正常,例如:mocha-phantomjs .\test\src\tests.html。只是grunt-mocha无法运行它们,抛出此错误。 转移到grunt-mocha-phantomjs为我修复它,不需要更改代码。 Gruntfile看起来像这样:

mocha_phantomjs: {
    all : ["./test/**/*.html"]
}

(如果您已在jshint设置中将camelcase设置为true,则可能必须转义该属性名称。)

答案 1 :(得分:0)

mocha.run()仅在浏览器中运行测试时有效。

要在浏览器中执行测试,请执行以下操作:

mocha.run()替换为:

if (window.mochaPhantomJS) {
    mochaPhantomJS.run();
}
else {
    mocha.run();
}