Today I setup FactoryGirl and Rspec in my rails app. Its fairly easy to do, here is how I did it and got my first Test to pass.
Add this code to your gemfile. Then run bundle to install them.
gem 'factory_girl_rails' gem 'rspec-rails', '~> 2.0'
Then changed up some configs
config.generators do|g| g.test_framework :rspec, fixtures: true, view_specs: false, helper_specs: false, routing_specs: false, controller_specs: true, request_specs: false g.fixture_replacement :factory_girl, dir: "spec/factories" end
Then I had created a spec for my user model. (I'm using devise by the way.) Just create a new file in your
spec/models directory called
user_spec.rb. Or you know, whatever you are going to add specs for. Then we are going to go ahead and test that the user has a valid factory. Don't worry this should fail.
require 'spec_helper' describe User do it "has a valid factory" do expect(FactoryGirl.build(:user)).to be_valid end end
Next we're going to manually create a folder in our spec file called
factories. We're going to create a new file called
users.rb. Note: Make sure that whatever name you use is plurarl or you could run into errors.
Now lets add in our code to create a new Factory.
FactoryGirl.define do factory :user do name "Casey" password "123456789" joined_staff "2013/09/09" email "email@example.com" end end
Some of this code is self explanitory but lets break it down a little bit.
name "Casey" - This just sets this factories name to "Casey".
password "123456789" - This just sets this factories password to "123456789"
joined_staff "2013/09/09" - This is for my particular application. I require signups to include this information, so I've included it here.
email "firstname.lastname@example.org" - This just sets this factories email to "email@example.com"
Note: This is just a basic example of how to setup a factory. You can input any column data that pertains to your particular database.
rspec in your terminal. It should pass! Congratulations! you just ran your first rspec test to test if you had a valid factory!
In the words of Red from The Red Green Show - Remember, I'm pulling for you. We're all in this together.comments powered by Disqus