plovr
Google Closure Library を使用する JavaScript コードの単体テストを実行するために使用しています。いくつかの非同期テストを実行する必要があるまで、セットアップは正常に機能していました。この議論から、 org.plovr.test.soy
plovr の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 のロードが停止する理由を知っている人はいますか?