Для развёртывания стандартной среды тестирования обычно нужно установить и настроить привычные инструменты.
Добавляем указанные ниже гемы в Gemfile
, запускаем bundle install
, чтобы установить эти библиотеки локально.
Rspec
Rspec - основной инструмент для unit-тестирования. А вот здесь хороший справочник по использованию Rspec в Rails.
group :development, :test do
...
gem 'rspec-rails', '~> 3.5'
end
Запускаем bundle install
, а затем bundle exec rails generate rspec:install
, чтобы создать структуру каталогов spec/
.
Shoulda matchers
Shoulda Matchers облегчит и ускорит тестирование за счет своих врапперов для валидаций, ассоциаций и редиректов.
group :development, :test do
...
gem 'shoulda-matchers', '~> 3.1'
end
В spec/rails_helper.rb
нужно добавить его настройки:
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
with.library :active_record
with.library :active_model
with.library :action_controller
with.library :rails
end
end
FactoryBot
factory_bot - отличная вещь для наполнения базы данных разнообразными объектами. Можно использовать как для тестов, так и для начальной инициализации базы данных и заселения её объектами для разработчиков (db/seeds.rb
).
group :development, :test do
...
gem 'factory_bot_rails'
end
После установки нужно создать свои фейковые модели в spec/factories/
Database Cleaner
Database Cleaner незаменим для поддержания нашей тестовой базы данных в здоровом состоянии. Имеет развитые средства управления стратегиями очистки.
group :test do
gem 'database_cleaner'
end
# spec/rails_helper.rb
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
end
rails-controller-testing
rails-controller-testing расширяет наши тесты контроллеров операторами assigns
и assert_templates
.
Cucumber
Cucumber Rails нужен для приемочных (asseptans) тестов
group :development, :test do
...
gem 'cucumber-rails', require: false
end
bundle exec rails generate cucumber:install
создаст структуру spec/features/
На этом процесс подготовки можно считать законченным и можем переходить к написанию тестов.