Тестирование интеграции JavaScript в Ruby on Rails - PullRequest
16 голосов
/ 30 января 2011

Я немного искал это и пытался реализовать собственное решение, но пока не нашел в этом уверенности.

Мне нужно написать интеграционные тесты в Ruby наRails, которые взаимодействуют с JavaScript и получают программные способы утверждать некоторые поведения.Я использую Test :: Unit для контроллера / моделей, но я пытаюсь протестировать некоторые поведения jQuery / JavaScript, используемые моим приложением.В основном он состоит из вызовов и взаимодействий ajax в пользовательском интерфейсе, который обновляет некоторые наборы информации.

Я не нашел решения, которое бы меня убедило и которое было бы прекрасно интегрировано с автотестом и всем красно-зеленым процессом,на данный момент большинство частей моего клиентского кода не проверено, и это заставляет меня нервничать (как и должно быть: P).

Итак, есть ли у кого-нибудь предложения по передовой практике в этом вопросе?Модульное тестирование JS немного сложнее, как указывает Крокфорд, потому что оно сильно зависит от текущего состояния пользовательского интерфейса и т. Д., И как AFAIK, даже он не нашел хорошего способа реализовать достойное тестирование ...

Коротко: мне нужно реализовать тесты для некоторого поведения пользовательского интерфейса, который зависит от Ajax, интеграции с автотестом или каким-либо другим инструментом CI и не нашел хорошего и элегантного способа сделать это.

Спасибо всем за вниманиеС наилучшими пожеланиями

Ответы [ 4 ]

4 голосов
/ 30 января 2011

AFAIK, вне комбинации Капибара с Selenium Web-Driver существует очень мало вариантов для автоматического тестирования кода JS. Я использую огурец с капибарой и селеновым веб-драйвером, и потому что селен-вебдрайвер фактически запускает firefox или chrome для тестирования конкретной страницы с помощью вызова ajax, выполнение набора тестов занимает значительно больше времени.

Есть некоторые альтернативы, но они не работают постоянно или для всех ситуаций. Например: Капибара с envjs

3 голосов
/ 19 ноября 2011

В апреле 2011 года ребята из Thinkbot обновили свой квест для тестирования javascript.Akephalos потерял популярность по следующим причинам:

Ошибки: как упоминалось ранее, в htmlunit есть ошибки, особенно в jQuery live.Хотя во всех реализациях браузеров есть ошибки, более полезно, если в тестах обнаруживаются те же ошибки, что и в реальных браузерах.

Совместимость: htmlunit не полностью реализует набор функций, который есть в современных браузерах.Например, он не полностью обрабатывает диапазоны DOM или загрузки файлов Ajax.

Рендеринг: htmlunit фактически не отображает страницу, поэтому тесты, которые зависят от видимости или позиционирования CSS, не будут работать.

Производительность: когда большинство ваших тестов используют Javascript, тестовые наборы с htmlunit начинают сканироваться.Для запуска теста с помощью Akephalos требуется некоторое время, а большой набор тестов может легко занять 10 или 15 минут.

Таким образом, они развернули свое собственное решение с открытым исходным кодом - capybara-WebKit .Это все еще довольно новое, но похоже, что сейчас это путь.

2 голосов
/ 06 марта 2011

Я использовал огурец и капибару с селеном. Это очень расстраивало, потому что селен, казалось, не мог видеть динамически генерируемый javascript, несмотря на то, что капибара должна была его ждать. Это было в январе 2011 года. Сейчас все может быть по-другому.

В настоящее время я использую огурец и капибару с акефалом. До сих пор это было очень сложно, потому что 1. это безголовый, поэтому вы не можете видеть прогресс. Вызов Capybara "save_and_open" в некоторой степени помог. 2. jQuery и akephalos, похоже, не так уж хорошо играют вместе. Например, запуск по радио-кнопке с помощью .change () в jquery прекрасно работает в chrome, но не в akephalos. Может быть, это намеренно, потому что я где-то позже слышал, что это не работает в IE. Я исправил проблему, используя .click () вместо .change () для переключателя, но так как функция .change была настроена для выполнения множества вопросов, мне пришлось специально написать код, чтобы заставить его работать для теста ,

Суть для меня в том, что автоматическое приемочное тестирование javascript в enils rails все еще незрелое и, возможно, требует больше работы, чем оно того стоит.

2 голосов
/ 31 января 2011

Эта статья рекомендует Akephalos .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...