Setup RSpec on a fresh Rails 7 project

Photo by Jonathan Bean on Unsplash

Installing RSpec, FactoryBot, Faker gems and configuring for testing environment.

Ruby 3.0.1 + Rails 7.0.0

Let’s get right to it…

Start a fresh project

rails new projectname -d postgresql
cd proje…


This content originally appeared on DEV Community and was authored by Adrian Valenzuela

Photo by Jonathan Bean on Unsplash

Installing RSpec, FactoryBot, Faker gems and configuring for testing environment.

Ruby 3.0.1 + Rails 7.0.0

Let's get right to it...

Start a fresh project

rails new projectname -d postgresql
cd projectname
git add -A
git commit -m "initial commit"

rails db:create
rails s

Install gems

git checkout -b rspec

In Gemfile add...

group :development, :test do
  # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
  gem "debug", platforms: %i[ mri mingw x64_mingw ]
  gem "rspec-rails"
  gem "factory_bot_rails"
  gem "faker"
end

Back in terminal/command line...

bundle install
rails g rspec:install

Configure gems

Create 'support' directory in 'spec' directory and create two files

spec/support/factory_bot.rb
spec/support/chrome.rb

And then one file in the spec directory for factories.

spec/factories.rb

Configure FactoryBot

# spec/support/factory_bot.rb

RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end

Configure driver

# spec/support/chrome.rb

RSpec.configure do |config|
  config.before(:each, type: :system) do
    if ENV["SHOW_BROWSER"] == "true"
      driven_by :selenium_chrome
    else
      driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400]
    end
  end
end

Require support files in rails_helper.rb

# spec/rails_helper.rb

require_relative 'support/factory_bot'
require_relative 'support/chrome'

When you generate a User model (or any model) RSpec will generate a factory for you in your factories.rb file.
You can modify it to look like this.

# spec/factories.rb

FactoryBot.define do
  factory(:user) do
    email { Faker::Internet.email }
    password { Faker::Internet.password }
  end
end

it "should run a test" do...

Run rspec command in the terminal and you should see it run and output some green text.

-> rspec
No examples found.

Finished in 0.00038 seconds (files took 0.94577 seconds to load)
0 examples, 0 failures

Finish up

git add -A
git commit -m "add rspec"
git checkout main
git merge rspec
git branch -D rspec
git push # assuming you have a repo online somewhere


This content originally appeared on DEV Community and was authored by Adrian Valenzuela


Print Share Comment Cite Upload Translate Updates
APA

Adrian Valenzuela | Sciencx (2022-01-06T22:13:32+00:00) Setup RSpec on a fresh Rails 7 project. Retrieved from https://www.scien.cx/2022/01/06/setup-rspec-on-a-fresh-rails-7-project/

MLA
" » Setup RSpec on a fresh Rails 7 project." Adrian Valenzuela | Sciencx - Thursday January 6, 2022, https://www.scien.cx/2022/01/06/setup-rspec-on-a-fresh-rails-7-project/
HARVARD
Adrian Valenzuela | Sciencx Thursday January 6, 2022 » Setup RSpec on a fresh Rails 7 project., viewed ,<https://www.scien.cx/2022/01/06/setup-rspec-on-a-fresh-rails-7-project/>
VANCOUVER
Adrian Valenzuela | Sciencx - » Setup RSpec on a fresh Rails 7 project. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/01/06/setup-rspec-on-a-fresh-rails-7-project/
CHICAGO
" » Setup RSpec on a fresh Rails 7 project." Adrian Valenzuela | Sciencx - Accessed . https://www.scien.cx/2022/01/06/setup-rspec-on-a-fresh-rails-7-project/
IEEE
" » Setup RSpec on a fresh Rails 7 project." Adrian Valenzuela | Sciencx [Online]. Available: https://www.scien.cx/2022/01/06/setup-rspec-on-a-fresh-rails-7-project/. [Accessed: ]
rf:citation
» Setup RSpec on a fresh Rails 7 project | Adrian Valenzuela | Sciencx | https://www.scien.cx/2022/01/06/setup-rspec-on-a-fresh-rails-7-project/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.