Экстерьеры 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 по умолчанию.

Вероятно, это не "правильный" способ решить эту проблему, но он выполняет свою работу.

Другие вопросы по тегам