Blog icon

Some Quick Tips for Tips for Testing Your Rails App

By reinteractive,
reinteractive
Scroll down to read

RSpec Mocks

by Leo Liang

Environment Variables

There might be times when you need to mock a certain value for ENV without overriding other values. This can be easily achieved as follows:

    before do
      allow(ENV).to receive(:[]).and_call_original
      allow(ENV).to receive(:[]).with('REPORT_ID').and_return('5707702298738688')
    end

This will only stub ENV[‘REPORT_ID’] and return value for all the other env vars.

Date.today

Normally we use Timecop to set dates. But you need to remember to run Timecop.return afterwards to avoid any unexpected behaviour:

    describe "some set of tests to mock" do
        before do
            Timecop.freeze(Time.local(1990))
        end

        after do
            Timecop.return
        end

        it "should do blah blah blah" do
        end
    end

Using Faker for Factories

by Sameera Gayan

Faker for Factories makes it easier when trying to create multiple records with uniq validations.

E.g

Lets say we have a User model with uniq email.

#without using Faker
FactoryGirl.define do
  factory :user do
    email "sameera@reinteractive.net"
  end
end

FactoryGirl.create_list(:user, 25) # this will fail as the email us not uniq
#with faker 
FactoryGirl.define do
  factory :user do
    email { Faker::Internet.email }
  end
end

FactoryGirl.create_list(:user, 25) # ✅ 💵

To find out how reinteractive can turn your web application vision into reality, get in touch with us through our contact form or call us on +61 2 8019 7252.