2013-02-12 3 views
0

Я пытаюсь ввести Unit Test в свой процесс разработки, и я не уверен, как это сделать.Тест блока JavaScript. Что насмехаться?

У меня есть большое приложение с большим количеством модулей (разделенных js-файлов). Например:

  • videoInfo.js
  • availableVideos.js
  • availableChannels.js
  • networkSettings.js
  • .......

Есть также несколько модулей, которые предоставляют услуги для отдыха:

  • eventHandler.js
  • i18n.js
  • ajax.js
  • configuration.js
  • auth.js
  • baseModule.js
  • ........

Вопрос в том, как я могу протестировать модуль, например videoInfo.js, который использует все сервисные модули? Я вижу два подхода:

  • Загружаю только видеоинформацию.js и высмеиваю все внутренние интерфейсы. Проблема в том, что я не буду ловить ошибки, если какой-либо из внутренних интерфейсов изменится.
  • загружает все модули (все приложения) и протестировать videoInfo с реальной средой приложений (за исключением внешних вызовов AJAX, которые будут моделируемыми)

Что такое хороший подход, чтобы сделать это, когда у вас есть много внутренних зависимостей?

ответ

2

В идеале вы хотите, чтобы оба ваших подхода находились в вашем тестовом наборе.

Вы хотите издеваться над всеми зависимостями (в вашем примере для videoInfo.js), чтобы вы могли изолировать свой код от всего остального и быть уверенным, что он работает правильно. В зависимости от дизайна кода, который у вас есть, это может быть сложно. Поскольку код, возможно, не был написан с учетом тестирования и поэтому не поддался насмешку.

Вы также хотели бы иметь целую серию тестов на уровне приложений, чтобы убедиться, что все взаимодействия между частями будут работать правильно. В зависимости от приложения эти тесты могут быть очень хрупкими из-за зависимости от данных, которые вы не контролируете.

Эти тесты, вероятно, будут в отдельных наборах, чтобы они могли запускаться независимо друг от друга.

Если вы только начинаете писать тесты для кода, напишите лучший тест, который вы можете. Тесты являются кодом и должны быть реорганизованы по мере продвижения. Напишите самый простой тест, который вы можете. Написание тестов для устаревшего кода чрезвычайно сложно. Текущая конструкция может быть трудно проверить правильно. Поэтому, когда вы делаете свои изменения, делайте все, что можете.