0

plovrGoogle Closure Library を使用する JavaScript コードの単体テストを実行するために使用しています。いくつかの非同期テストを実行する必要があるまで、セットアップは正常に機能していました。この議論から、 org.plovr.test.soyplovr のtest-templateオプションを使用してデフォルト ファイルを置き換える必要があることがわかりました。

使用できるように、test.soy ファイルを更新しましたgoog.testing.ContinuationTestCase

<body>
  <script src="{$baseJsUrl}"></script>

  //This script tag was added.
  <script>
    goog.require('goog.testing.jsunit');
    goog.require('goog.testing.ContinuationTestCase');
  </script>

  <script src="{$testJsUrl}"></script>
</body>

ContinuationTestCase を使用した単体テストが機能するようになりましたが、別の予期しない問題が発生しました。私のexternsがロードされていません! 以下の plovr 構成を参照してください。

{
  "id": "peders-app",
  "inputs": "src/peder/application.js",
  "paths": "src/peder",
  "output-file": "compiled.js",
  "externs": "src/peder/kinetic-externs.js",
  "test-template":"test/org.plovr.test.soy"
}

構成にtest-templateがなかった場合、externs は正常にロードされましたが、単体テストを使用ContinuationTestCaseすると失敗しました。

test-templateオプションを追加すると、単体テストはContinuationTestCase成功しますが、externs がロードされていないため、他の多くのテストが失敗します。

以下は、externs が機能していないと思わせるエラーです。

12:25:39.398  Start
12:25:39.400  testAddLine : PASSED
12:25:39.402  testCreateUndoCommand : PASSED
12:25:39.403  testUpdateLocalData : PASSED
12:25:39.404  testUpdateServerData : PASSED
12:25:39.404  Done

JS ERROR: Uncaught ReferenceError: Kinetic is not defined
URL: http://localhost:9810/input/peders-app/src/peder/smartPoint.js
Line: 143
JS ERROR: Uncaught TypeError: Cannot read property 'prototype' of undefined
URL: http://localhost:9810/input/peders-app/src/peder/modifyLine.js
Line: 24
JS ERROR: Uncaught ReferenceError: Kinetic is not defined
URL: http://localhost:9810/input/peders-app/src/peder/shapes/line.js
Line: 154

カスタムのテスト テンプレートを使用すると、externs のロードが停止する理由を知っている人はいますか?

4

1 に答える 1

0

何らかの理由で、テストの実行時に externs がロードされていなかったことが判明しました。外部からの関数が呼び出された場所からのエラーは、テストが失敗する原因にはなりませんでした。test-templateオプションを使用するとエラーがテストに失敗する理由はまだわかりませんが、幸いなことに回避策を見つけました。

externs を plovr jar に直接追加しただけです。これを行うには、extern をexternsplovr.jar 内のフォルダーに追加するだけです。次に plovr jar の最上位にある externs_manifest.txt を更新して、追加したファイルをすべて含めます。これにより、plovr は extern をデフォルトの extern として扱います。

これはおそらく、この問題を解決する「正しい」方法ではありませんが、仕事は完了します。

于 2014-06-25T04:58:30.553 に答える