我有一个模块,我正在用摩卡-幻影测试这个模块。我创建了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文件的话。
发布于 2014-10-14 04:42:28
通常,您将向mocha-phantomjs运行程序传递一个Tests.html文件,该文件将加载要使用脚本标记运行的所有测试文件。
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库,您可以单独或以嵌套方式在所有测试文件中加载一个测试--init.js文件,并在该文件中要求这样做:
Tests.html
<script src="test-init.js"></script>test-init.js
require('controller-tests/init.js');
require('service-tests/init.js');controller-tests/init.js
require('one-controller-test.js');
require('another-controller-test.js');
require('yet-another-controller-test.js');service-tests/init.js
require('one-service-test.js');
require('another-service-test.js');
require('yet-another-service-test.js');发布于 2016-11-17 22:28:46
我同意DanAri的观点。
我使用相同的引导加载程序和测试设置。
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")。此文件包含路径别名、依赖关系shims等。
那么,我的RequireJS "data-main“file /js/rjsMain.js看起来如下所示:
require(['rjsConfig'], function () {
require(['app/main'], function () {});
});然后,我复制了Require "main.js“文件,为我的Mocha夹具文件添加了一个备用入口点。
这样做的原因是为了不需要维护两个单独的配置文件。有一个共享文件是很好的。
PhantomJS
让PhantomJS实际加载并与异步加载的内容交互?那是另一回事了。这可能会很棘手。
幸运的是,我找到了一个有用的文件。
它没有一个很好的名字,但是--至少对我来说-- "load_ajax.js“是你需要让它发挥作用的秘诀。
https://gist.github.com/kalharbi/fc9d4f71b5e2a8f485cc
您需要自定义它来运行您的本地路由。
https://stackoverflow.com/questions/21904120
复制相似问题