4

Jasmineでjavascriptユニットテストを実行するために、javaを使用してEnvjsを実行しています。これにより、ブラウザーなしでテストを実行できるようになり、Jenkins(継続的インテグレーションビルドサーバー)への統合が容易になります。

以下のようなコードを使用して、実際のジャスミンテストランナーをロードするだけのLoadSpecRunner.jsファイル(Envjsが実行する)があります。

window.location.href = 'file:///c:/source/JasmineTest/SpecRunner.html');

問題は、ファイルへの完全なURLの設定が正常に機能するのに対し、相対パスを設定する試みはすべて失敗することです。以下は、返された出力に相対URLを設定するための私の試みの一部です。

window.location.href = Envjs.uri('../JasmineTest/SpecRunner.html');

また

window.location.href = '../JasmineTest/SpecRunner.html';

ファイルfile://c/source/JasmineTest/SpecRunner.html
Java例外を開くことができませんでした:java.net.UnknownHostException:c

window.location.href = window.location.href;

ファイルfile:// c /:/ Source / jasmine-reporters / about:blank
JavaException:java.net.UnknownHostException:cを開くことができませんでした

誰かアイデアはありますか?

ありがとう

Cedd

PS。私がやろうとしていることについてさらに読む:

http://skaug.no/ingvald/2010/10/javascript_unit_testing/

http://www.build-doctor.com/2010/12/08/javascript-bdd-jasmine/

4

2 に答える 2

1

私は同じ問題に遭遇し、 env.rhino.1.2.jsを変更して解決しました:

if (!base) {
    base = 'file://' +  Envjs.getcwd() + '/';
}

->

if (!base) {
    base = 'file:///' +  Envjs.getcwd() + '/';
}
于 2014-01-26T10:07:29.213 に答える
0

うまくいけば、私はあなたの質問を正しく理解しました - 以下はどのように見えますか? (baseURL を微調整する必要があるかもしれません)。

関数;

function resolvePath (relativePath) {
  var protocol = "file:///c:/";
  var baseUrl = "source/JasmineTest";
  var reUpward = /\.\.\//g;
  var upwardCount = (relativePath.match(reUpward) || []).length;
  return protocol + (!upwardCount ? baseUrl : baseUrl.split("/").slice(0, -upwardCount).join("/")) + "/" + relativePath.replace(reUpward, "");
}

呼び出しの例;

resolvePath("SpecRunner.html");
// "file:///c:/source/JasmineTest/SpecRunner.html"
resolvePath("path/SpecRunner.html");
// "file:///c:/source/JasmineTest/path/SpecRunner.html"
resolvePath("../../SpecRunner.html");
// "file:///c://SpecRunner.html"
resolvePath("../SpecRunner.html");
// "file:///c:/source/SpecRunner.html"
resolvePath("SpecRunner.html");
// "file:///c:/source/JasmineTest/SpecRunner.html"

これは、理解しやすいはずのより長いバージョンでもあります。これは、resolvePath と同じです。

function longerVersionOfResolvePath (relativePath) {
  var protocol = "file:///c:/";
  var baseUrl = "source/JasmineTest";
  var reUpward = /\.\.\//g;
  var upwardCount = (relativePath.match(reUpward) || []).length;

  var walkUpwards = upwardCount > 0;
  var relativePathWithUpwardStepsRemoved = relativePath.replace(reUpward, "");
  var folderWalkedUpTo = baseUrl.split("/").slice(0, -upwardCount).join("/");

  if (walkUpwards) {
    return protocol + folderWalkedUpTo + "/" + relativePathWithUpwardStepsRemoved;
  }
  else {
    return protocol + baseUrl + "/" + relativePath;
  }
}
于 2012-07-17T10:11:16.810 に答える