I’m getting to grips with RSpec for testing and getting to grips with some of it’s functionality. To play around with some of the features I’m building a side project of an employee database, nothing too fancy but just something that stores all the features of an employee, i.e. name, salary, email, location, phone number etc. Most of the data will be purely for testing so will come from the Faker gem.
I’m following a few guides but as per usual thought I’d keep my set up notes here for future reference… until I become a full fledged Rails developer and can do this with my eyes closed!
Setting up RSpec
add relevant gems to Gemfile
group :development, :test do gem 'rspec-rails' gem 'guard-rspec' end group :test do gem 'database_cleaner' end Then run
$ rails g spec:install $ bundle exec guard init This will install the Spec framework. Guard automates the running of your tests and with guard running ($ guard) your tests will run every time a change is made to a file and you save the file. The database cleaner gem ensures the test database is clean after running tests so there are no conflicts. In the spec/rails_helper.rb file you should have the following:
require 'spec_helper' require 'rspec/rails' require 'database_cleaner' scroll down and add the following:
config.use_transactional_fixtures = false
config.before(:each) do |example| DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction #using truncation for js tests and transaction otherwise DatabaseCleaner.start end config.before(:each) do DatabaseCleaner.clean end Finally add capybara to simulate user interaction test.
gem 'capybara' run $bundle install and add require 'capybara/rspec' to the spec/rails_helper.rb file. If using seed data add
gem 'factory_girl_rails' and run bundle install. This will allow test data to be added data to your test database for testing in Spec.