我正在plovr
为使用 Google Closure 库的 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 进行的单元测试可以正常工作,但出现了一个不同的意外问题。我的外部人员没有被加载!请参阅下面的 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"
}
当我的配置中没有测试模板时,我的外部加载正常,但我的单元测试使用ContinuationTestCase
失败。
当我添加test-template选项时,我的单元测试使用ContinuationTestCase
通过,但由于未加载外部,许多其他测试失败。
以下是让我相信外部人员不起作用的错误:
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
有谁知道为什么使用自定义测试模板会阻止我的外部人员被加载?