在目录中运行所有'test.html'文件 - mocha-phantomjs

时间:2014-02-20 09:52:51

标签: node.js unit-testing phantomjs mocha mocha-phantomjs

我有一个模块,我正在使用mocha-phantomjs测试这个模块。我创建了package.json文件

{
  "name"        : "demo-test",
  "scripts": {
    "test": "npm run test-debug",
    "test-debug": "mocha-phantomjs ./test/Test1.html"
  },
  "dependencies" : {
    "mocha"     : "1.13.x",
    "commander" : "1.2.x",
    "which"     : "~1.0.5",
    "mocha-phantomjs": "3.3.2"
  },
  "devDependencies" : {
    "chai"          : "1.8.x",
    "coffee-script" : "1.6.x",
    "requirejs"     : "2.1.x",
    "jquery"        : "2.1.0"
  }
}

然后我运行npm install然后npm test来运行测试。它工作正常并运行test1.html的测试。 现在我希望测试目录下的所有文件(test1,test2,...)在运行npm test时执行。

我可以通过在package.json文件中单独调用来运行所有html文件,但是如果有办法加载所有Html文件。

2 个答案:

答案 0 :(得分:1)

通常,您会将 Tests.html 文件传递给 mocha-phantomjs 运行器,该运行器会加载您要使用脚本代码运行的所有测试文件

Tests.html 将包含:

<script src="controller-tests/one-controller-test.js"></script>
<script src="controller-tests/another-controller-test.js"></script>
<script src="controller-tests/yet-another-controller-test.js"></script>
<script src="service-tests/one-service-test.js"></script>
<script src="service-tests/another-service-test.js"></script>
<script src="service-tests/yet-another-service-test.js"></script>

或者,如果您使用 RequireJS 或其他AMD库,则可以加载一个 test-init.js 文件,并且该文件,单独或以嵌套方式请求所有测试文件,如下所示:

<强> Tests.html

<script src="test-init.js"></script>

<强>测试init.js

require('controller-tests/init.js');
require('service-tests/init.js');

<强>控制器的测试/ init.js

require('one-controller-test.js');
require('another-controller-test.js');
require('yet-another-controller-test.js');

<强>服务的测试/ init.js

require('one-service-test.js');
require('another-service-test.js');
require('yet-another-service-test.js');

答案 1 :(得分:0)

我同意DanAri。

我使用相同的bootloader和测试设置。

Mocha BDD

据推测,默认情况下,在“BDD”模式下运行Mocha会在项目根目录中的“test”目录中查找html文件。首先查找名为“test.html”的文件。 “test / test.html”是Mocha用作夹具文件的默认路径目标。

关于RequireJS / AMD

关于客户端(AMD)风味RequireJS,我使用二进制分支模式。

-index.html
  |
  -/js/rjsMain.js
-test/test.html
  |
  -/js/rjsTest.js

我将RequireJS配置部分分成了一个新文件(我称之为“rjsConfig.js”)。此文件包含路径别名,依赖性填充程序等等。

那么,我的RequireJS“data-main”文件“/js/rjsMain.js”如下所示:

require(['rjsConfig'], function () {
    require(['app/main'], function () {});
});

然后我复制了Require“main.js”文件,为我的Mocha fixture文件添加了一个备用入口点。

这样做的原因是您不必为Require维护两个单独的配置文件。有一个共享文件很高兴。

<强> PhantomJS

让PhantomJS实际加载并与异步加载的内容进行交互?那是另一回事。这可能非常棘手。

幸运的是,我发现了一个可以解决问题的文件。

它没有一个非常好的名字,但是 - 至少对我来说 - “load_ajax.js”是让它发挥作用所需的秘诀。

https://gist.github.com/kalharbi/fc9d4f71b5e2a8f485cc

您需要对其进行自定义以针对您的本地路线运行。