我有一个模块,我正在使用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文件。
答案 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
您需要对其进行自定义以针对您的本地路线运行。