- Использование Rspec 2
- Использование Капибара
- Использование Spork
- Использование Guard
Guard + Spork (+ Rspec + Capybara) = Автоматическое тестирование.
Я не рекомендую использовать огурец.Все любят огурец, но это гораздо больше работы, чем стоит.Это слой регулярных выражений поверх того, что вы можете очень легко сделать с помощью Rspec + Capybara с новой функцией приемочного тестирования (это был отдельный гем, теперь он включен в rspec).
Когда вы создаете свое приложение, я рекомендую следующее:
- Поскольку вы концептуализируете свои модели , напишите описания испытаний моделей Rspec.Такие вещи, как
it "should save a :start_date"
.Сначала начните строить свои модели, написав тесты для атрибутов (какие значения start_date
он принимает, как обрабатывать недопустимые значения и т. Д.).Затем при необходимости напишите интеграционные тесты между моделями.Это тесты модель , а не тесты unit .Когда вы пишете тесты для атрибутов модели, это модульные тесты (тесты изолированного класса).Когда вы тестируете функциональность между моделями (когда я делаю user.posts.create(:title => "My first blog post")
, я ожидаю, что для этого пользователя создается пост), это, на мой взгляд, "интеграционные" тесты.В Rspec это «модельные» тесты. - После того, как вы познакомитесь с некоторыми основами ваших моделей, write view tests .Чтобы реализовать утверждения в тестах представлений, вам понадобятся настройки Spork, Guard и Capybara.И тогда вам нужно написать свой Haml ... а затем код вашего контроллера ... В конце концов, вы будете писать код, чтобы пройти тест представления.Идея проведения тестов как контроллера, так и представления является излишней.С помощью приемочных тестов Rspec + Capybara вы можете поместить все в каталог
spec/acceptance
.Экономит ваше время и много мыслей.В конце вы тщательно тестируете свои модели и полностью выполняете запросы / html. - По мере того, как ваше приложение становится больше, тесты будут выполняться намного дольше.Все тесты могут легко занять 10-20 минут!Это быстро отключит вас, особенно если вам нужно просто исправить опечатку перед повторным нажатием.Чтобы избежать этого, найдите умные способы использования начальных данных (данные, которые вам не нужно воссоздавать между каждым тестом), или умные способы использования ложных данных, и настройте Spork.Не перегружая сервер Rails между тестовыми прогонами, вы сокращаете ТОННУ времени.А с Guard + Spork вам не нужен автотест (автотест устарел).
- Если вы хотите пойти еще дальше, вы можете протестировать свой javascript.Это все еще очень новая область.Сейчас есть два подхода: 1) использовать Capybara с драйвером с поддержкой javascript (селен - единственный, который действительно работает на этом посте), или 2) использовать jasmine .Я бы подождал, если ваше приложение не является «чисто javascript» приложением.
Для тестов Javascript я думаю создать какой-то слой node.js / websocket, который позволяет вам запускать тесты жасмина локально на вашем тестовом сервере Rails + Spork, на вашем Mac и Windows (через Parallels или VMWare Fusion или что-либо еще), является гораздо лучшим способом для тестирования view + javascript, потому что вы получаетевсе приложение, как оно есть на самом деле.
Это все, что вам нужно на данный момент для создания надежного приложения на Rails.Надеюсь, это поможет, Ланс.