Switching Rails test framework to Rspec
How to change the test framework of an existing Rails application to Rspec
I had an old Rails application that was generated with the default
Minitest framework for testing. Now I want to keep working on it but switching to Rspec. The application has no tests, but we do have a test
directory with default boilerplate.
Setting up Rspec
Add the following gems to the Gemfile
in the development and test block:
# Gemfile
group :development, :test do
gem 'rspec-rails', '~> 5.0', '>= 5.0.1'
gem 'factory_bot_rails', '~> 6.2'
end
Save the Gemfile
and run bundle install
.
Run the RSpec generator:
$ bundle exec rails generate rspec:install
The command adds the following files:
.rspec
spec/spec_helper.rb
spec/rails_helper.rb
Since I won't be using fixtures, I can remove the fixture configuration line in the rails_helper.rb
file:
# spec/rails_helper.rb
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{::Rails.root}/spec/fixtures"
Inside the configuration block, I include FactoryBot methods. This will allow me
to call FactoryBot methods directly in the tests without prepending them with
FactoryBot
.
# spec/rails_helper.rb
config.include FactoryBot::Syntax::Methods
Configure generators to use Rspec
In config/application.rb
add:
config.generators.test_framework = :rspec
Remove minitest boilerplate.
git rm -r test/
The application is now ready to use RSpec.
Photo by Daniel Abadia on Unsplash