Подтвердить что ты не робот

Должен ли я unit test мой JavaScript?

Мне интересно, если бы это было ценно, я хотел бы начать использовать QUnit, но я действительно не знаю, t знать, с чего начать. На самом деле я не собираюсь врать, я новичок в тестировании вообще, не только с JS.

Я надеюсь получить несколько советов о том, как я начну использовать модульное тестирование с помощью приложения, у которого уже есть большое количество JavaScript (хорошо, поэтому около 500 строк, а не огромных, достаточно, чтобы заставить меня задаться вопросом, есть ли у меня регресс что остается незамеченным). Как бы вы посоветовали начать работу и где мне написать свои тесты?

(например, его приложение rails, где логическое место для моих тестов JS, было бы здорово, если бы они могли войти в каталог /test, но вне публичного каталога и, следовательно, это невозможно... err is это?)

4b9b3361

Ответ 1

Ну, начните с JsUnit. Похоже, вам больше любопытно об аппаратном тестировании в целом.

То, что вы получаете от модульного тестирования (если все сделано правильно):

  • Возможность обнаружения регрессий в вашем коде, как вы упомянули
  • Менее болезненная интеграция, поскольку каждая часть вашего кода уже проверена сама по себе
  • Четкое представление о том, как будет использоваться ваш код (и не ожидается)

Модульные тесты должны в основном касаться любого общедоступного метода в вашем коде. Иногда у вас может быть причина для проверки частных методов, и я уверен, что вы можете решить, когда это будет возможно. Цель проста:

  • Проверьте, что метод делает правильную работу с правильным вводом
  • Протестируйте, чтобы метод выполнял правильные действия с помощью неправильного ввода.

Во многих отношениях ваши тесты должны определять функциональность ваших методов.

Иногда, когда люди пишут свои модульные тесты, они намеренно "заглушают" любой интегрированный код (т.е. вызовы методов, которые возвращают другие данные из базы данных, файла или бизнес-логики) и вместо этого возвращают статические данные. Это помогает вам чувствовать себя более уверенно в том, что вы проверяете только код, присутствующий в тестируемой логике.

Вы можете захотеть прочитать для получения дополнительной информации о хороших и плохих модульных тестах.

Изменить: Я мало знаю об этом в Ruby on Rails, но вы можете подумать о том, что некоторые другие люди делают. В конечном итоге инструменты, доступные вам и структура ваших тестов, будут зависеть от ваших фреймворков и языка.

Ответ 2

Я обнаружил, что модульное тестирование с javascript очень полезно. Тестирование модуля компенсирует отсутствие безопасности типов на языке. Он также позволяет быстро проверить ваш код, запущенный в разных браузерах.

Для моих тестов я использую QUnit в качестве тестового бегуна и JSMock для насмешек. Я использую firebug для их отладки.

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

Я действительно не стал эффективным при написании модульных тестов, пока не прочитал материал на www.xunitpatterns.com. Поэтому, если вы только начинаете, я бы сказал, купи книгу и прочитал ее.

Ответ 3

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

Ответ 4

Тестирование JavaScript напрямую не является тривиальным (потому что ему нужен "внешний" интерпретатор, который в производстве env является браузером). Кроме того, трудно включить его в вашу среду непрерывной интеграции.

Так что, поскольку модульное тестирование JavaScript - это очень большие усилия, я бы попробовал тестировать материал, более грубый в тестах интеграции. Например: canoo-webtest включает в себя интерпретатор java- script. Вы подделываете действия пользователя (например, нажатие кнопки) и запускается javascript. Поэтому вы косвенно проверяете.

Все еще есть некоторые материалы javascript, связанные с UI (например, эффекты fade) и т.д. Это нужно протестировать вручную.

Ответ 5

С Rails я бы рекомендовал Blue Ridge. Это упаковка ScrewUnit, некоторые рейк-задачи, а также возможность запуска тестов из браузера (через Rhino). У нас довольно много тестов Javascript. Тесты больше похожи на RSpec, чем другие упомянутые инструменты, поэтому он меньше сдвига в мышлении... отлично работает!

Чтобы начать работу, самое лучшее место для этого - это просто начать копаться в Интернете для других людей, которые успешно справились с этим. На github есть примеры.