Экстерьеры Plovr не загружаются при использовании опции test-template
Я использую plovr
запустить модульные тесты для моего кода JavaScript, который использует библиотеку Google Closure. Моя установка работала нормально, пока мне не потребовалось выполнить несколько асинхронных тестов. Из этого обсуждения я узнал, что мне нужно заменить значение по умолчанию 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"
}
Когда в моей конфигурации не было test-template, мои внешние файлы загружались нормально, но мои модульные тесты использовали 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
Кто-нибудь знает, почему использование собственного тестового шаблона остановит загрузку моих внешних файлов?
1 ответ
Оказывается, по какой-то причине внешние программы никогда не загружались при выполнении тестов. Ошибки, из-за которых вызывались функции извне, просто не приводили к сбою тестов. Я до сих пор понятия не имею, почему с помощью test-template
вариант сделал ошибки провалить тесты, но, к счастью, я нашел обходной путь.
Я просто добавил свои экстерьеры прямо в банку с пловром. Для этого просто добавьте свой экстерьер в externs
папка внутри пловр.яр. Затем обновите externs_manifest.txt на верхнем уровне plovr jar, чтобы включить в него все добавленные вами файлы. Это заставит plovr рассматривать ваш extern как extern по умолчанию.
Вероятно, это не "правильный" способ решить эту проблему, но он выполняет свою работу.