Cesare Ferrari
Cesare's Blog

Cesare's Blog

Switching Rails test framework to Rspec

Switching Rails test framework to Rspec

How to change the test framework of an existing Rails application to Rspec

Cesare Ferrari's photo
Cesare Ferrari

Published on Jul 22, 2021

1 min read

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

 
Share this