Let's organize the gems related to the introduction of RSpec, which is a test gem for Ruby on Rails.
A gem used to write Ruby on Rails test code. The actual gem name is "rspec-rails".
Used to test features such as new user registrations and logins, posting and editing messages.
Ruby has another test gem called mini_test installed as standard, but it seems that RSpec is the mainstream at the development site.
Write the following in the Gemfile
and enter bundle install
in the terminal.
Gemfile
#group :development, :Describe in a group called test.
group :development, :test do
gem 'rspec-rails', '~> 4.0.0'
end
Terminal
bundle install
In the terminal, type the following to generate the directory and files.
Terminal
rails g rspec:install
#After executing the above, the following directories and files will be generated
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
Write the following in the .rspec
file. Write it to visualize the execution result of the test code on the terminal.
.rspec
--require spec_helper
--format documentation #Add this sentence
That's it for RSpec.
FactoryBot and Faker are some of the gems I often use with RSpec.
It is a gem that can group instances, and the values specified for the instances of each class are set in advance in other files and used in each test code.
As with RSpec, write it in the group group: development,: test
in the Gemfile before installing.
Gemfile
group :development, :test do
gem 'factory_bot_rails'
end
Terminal
bundle install
As a brief introduction, FactoryBot is used by describing it as follows. * Assuming that the app has a Users table
spec/factories/users.rb
FactoryBot.define do
factory :user do
name {"sample"}
email {"sample@mail"}
password {"sample777"}
end
end
By writing in this way, you can prepare the user information to be used in the test in advance.
A gem that generates random values will generate random values such as email addresses, personal names, and passwords.
As with RSpec, write it in the group group: development,: test
in the Gemfile before installing.
Gemfile
group :development, :test do
gem 'faker '
end
Terminal
bundle install
Faker will generate a random value like this.
spec/factories/users.rb
FactoryBot.define do
factory :user do
name { Faker::Name.initials(number: 5) }
email { Faker::Internet.free_email }
password { Faker::Internet.password(min_length: 6) }
end
end
You can instantiate a random value each time you run the test code. If the app to be tested has a user management function, I think that columns such as email are prepared in the table, but when performing multiple tests, such as "There are already duplicate instances of email" It helps prevent unintended test errors.
So far, I'd like to talk about unit testing with RSpec in the next article.
RSpec's official GitHub Official GitHub of FactoryBot (factory_bot_rails) Faker's official GitHub
Recommended Posts