我正在尝试将HTML夹具数据加载到JsTestDriver测试环境中。当jsTestDriver.conf
文件位于工作目录的顶层时,我可以使它工作,但如果将其放在子目录中并尝试使用JsTestDriver的basePath
功能,则无法使它工作。有人有这个工作吗?如果是这样,我在做什么错?
首先工作的目录结构:
├── 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分别调用服务器和test-runner:
server.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"
test.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目录中时,尽管尝试了多种变体,但似乎我无法在不使用绝对路径(
/test//$HOME/javascript/jstd/fixtures/fix.html
)的情况下让JsTestDriver中的嵌入式码头服务器来查找fix.html文件。默认情况下,JSTD假定Jetty的/test
根目录是相对于放置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版本中尝试过。结果相同。感谢任何可以帮助解决这个难题的人。
最佳答案
我建议您尝试使用1.3.3d版本-由于该版本已修复了bug in relative path calculation的问题,因此我们不得不继续使用该版本,但似乎已将其重新引入作为1.3.4的回归,并且仍然存在问题1.3.5。
关于javascript - 使用JsTestDriver的basePath指定从何处加载夹具数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13104542/