我正在尝试将 HTML 夹具数据加载到 JsTestDriver 测试环境中。当jsTestDriver.conf
文件位于工作目录的顶层时,我可以让它工作,但如果我把它放在子目录中并尝试使用basePath
JsTestDriver 的功能,我就无法让它工作。有没有人让这个工作?如果是这样,我做错了什么?
首先是有效的目录结构:
├── fixtures
│ └── fix.html
├── jsTestDriver.conf
├── lib
│ └── JsTestDriver-1.3.5.jar
├── server.sh
├── test
│ └── dom.fixture.test.js
└── test.sh
jsTestDriver.conf 如下所示:
server: http://localhost:9876
# files in the server section are only added if explicitly asked for
serve:
- fixtures/fix.html
test:
- test/dom.fixture.test.js
timeout: 10
server.sh 和 test.sh 分别调用 server 和 test-runner:
服务器.sh:
PORT=9876
java -jar lib/JsTestDriver-1.3.5.jar --captureConsole --port $PORT --browser "/usr/bin/firefox;%s,/opt/google/chrome/google-chrome;%s;--allow-file-access-from-files"
测试.sh
java -jar lib/JsTestDriver-1.3.5.jar --tests all --captureConsole
我在 dom.fixture.test.js 代码中加载夹具,如下所示:
function getFixtureContent() {
var url = '/test/fixtures/fix.html';
var request = new XMLHttpRequest();
request.open('GET', url, false); // synchronous!
request.send(null);
return request.responseText;
}
这成功地返回了 fix.html 中的 html,然后我必须将其加载到 DOM 中。
但是,当我将 jsTestDriver.conf 文件推送到 conf 目录时,我似乎无法让 JsTestDriver 中的嵌入式码头服务器在不使用绝对路径 ( /test//$HOME/javascript/jstd/fixtures/fix.html
) 的情况下找到 fix.html 文件,尽管尝试了许多变化。默认情况下,JSTD 假定/test
Jetty 的根与您放置 jsTestDriver.conf 文件的位置相关。据说,设置basePath
应该允许你改变它。
这是一次失败的尝试:
目录结构是相同的,除了 jsTestDriver.conf 在一个 conf 目录中:
├── conf
│ └── jsTestDriver.conf
jsTestDriver.conf 中的路径都被调整为一个目录:
server: http://localhost:9876
# files in the server section are only added if explicitly asked for
serve:
- ../fixtures/fix.html
test:
- ../test/dom.fixture.test.js
timeout: 10
server.sh 和 test.sh 有两个额外的命令行开关:
--basePath .. --config conf/jsTestDriver.conf
其余的都是一样的。
错误是:
<h2>HTTP ERROR 404</h2>
<p>Problem accessing /test/fixtures/fix.html. Reason:
<pre>NOT_FOUND</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>
我已经尝试过 1.3.5 和 1.3.4.b 版本。结果相同。感谢任何可以帮助解决这个谜团的人。