DEV Community

Cover image for Set up RSpec, Shoulda matchers and FactoryBot on Rails 7
Ankit Pariyar
Ankit Pariyar

Posted on

Set up RSpec, Shoulda matchers and FactoryBot on Rails 7

Rspec

  • Add rspec-rails on development and test group of Gemfile

    group :development, :test do gem 'rspec-rails' end 
    • Then install it with command bundle install
  • Run command rails generate rspec:install for generating boilerplate config files. you can see following outputs:

    create .rspec create spec create spec/spec_helper.rb create spec/rails_helper.rb 
  • Verify RSpec is correctly installed and configured by running bundle exec rspec you should see following outputs:

    No examples found. Finished in 0.0002 seconds (files took 0.0351 seconds to load) 0 examples, 0 failures 

Shoulda Matchers

  • Shoulda Matchers provides useful one-liners for common tests.

  • Add shoulda-matchers to test group of Gemfile

    group :test do gem 'shoulda-matchers' end 
    • Then install it with command bundle install
  • To integrate it to spec add following to bottom of the rails_helper.rb

    Shoulda::Matchers.configure do |config| config.integrate do |with| with.test_framework :rspec with.library :rails end end 

FactoryBot

  • Add factory_bot_rails to Gemfile. We want this gem to available on all rails environments, add this gem on outside of any group blocks.

    gem 'factory_bot_rails' 
    • Then install it with command bundle install
  • To use FactoryBot inside the spec file require it in spec_helper.rb file

    require 'factory_bot_rails' 
  • Then in same file, inside of RSpec.configure block add following line to use FactoryBot methods without FactoryBot namespace. For example we have to do FactoryBot.create we can instead just use the create method directly

    config.include FactoryBot::Syntax::Methods 
  • we want Rails model generator to use FactoryBot to create factory file stubs whenever we generate a new model. For this, require FactoryBot on the top of config/application.rb

    require 'factory_bot_rails' 
  • Then in the same file add following code inside the Application class

    config.generators do |g| g.test_framework :rspec, fixture: true g.fixture_replacement :factory_bot, dir: 'spec/factories' end 

Now RSpec, Shoulda Matchers, and FactoryBot are all set up and ready to help test your Rails application!

Top comments (1)

Collapse
 
epigene profile image
Augusts Bautra

Thanks for the writeup, Ankit. Requiring FB in spec_helper is probably redundant, including in gemfile requires it by default.