我正在尝试将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/

10-11 07:01