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

我有一个模块,我使用mocha-phantomjs来testing这个模块。 我创build了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来运行testing。 它工作正常,并运行test1.html的testing。 现在我想要在testing目录下的所有文件(test1,test2,…)在执行npm test执行。

我可以运行所有的HTML文件,然后单独调用package.json文件,但是如果有一种方法来加载所有的Html文件。

通常情况下,您需要将一个Tests.html文件传递给您的mocha-phantomjs runner,它将载入您想要使用脚本标记运行的所有testing文件。

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文件,并在该文件中单独或以嵌套方式要求所有testing文件,如下所示:

Tests.html

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

testinginit.js

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

控制器的testing/ init.js

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

服务testing/ init.js

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

我同意DanAri。

我使用相同的引导程序和testing设置。

摩卡BDD

据推测,默认情况下,以“BDD”模式运行Mocha将在项目的根目录下的“test”目录中查找html文件。 它从查找名为“test.html”的文件开始。 “test / test.html”是Mocha用作夹具文件的默认path目标。

关于RequireJS / AMD

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

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

我将我的RequireJSconfiguration部分分隔成一个新文件(我称之为“rjsConfig.js”)。 该文件包含path别名,依赖关系垫片等等。

所以,那么我的RequireJS“data-main”文件“/js/rjsMain.js”看起来像这样:

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

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

这样做的原因是,您不必为Require而维护两个单独的configuration文件。 有一个共享文件是很好的。

PhantomJS

让PhantomJS实际加载并与asynchronous加载的内容进行交互? 这是另一回事。 这可能是相当棘手的。

幸运的是,我find了一个可以做到这一点的文件。

它没有一个很好的名字,但是 – 至less对我来说 – “load_ajax.js”是你需要启动它的秘诀。

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

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