【gem】FactoryGirl
FactoryGirlはRailsのgemで、テストデータの作成をしてくれます。
テストアプリケーションはdeviseを使ってユーザー登録できるようにしてます。
Gemfileに以下を記述してください
#Gemfile group :development, :test do gem 'factory_girl_rails' end
以下のファイルを追加してください。 spec/factries/user.rb
FactoryGirl.define do factory :user do name "useraaa" email "exampleaaa@example.com" password "exampleaaa" end end
次に、このFactoryGirlを実行します。railsコンソールに入って以下を実行します。
2.1.6 :010 > FactoryGirl.create(:user) (0.2ms) begin transaction User Exists (0.5ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = 'exampleaaa@example.com' LIMIT 1 SQL (1.2ms) INSERT INTO "users" ("name", "email", "encrypted_password", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?) [["name", "useraaa"], ["email", "exampleaaa@example.com"], ["encrypted_password", "$2a$10$ySmHMDq8rrZJnVXuTAe5JemQIaXaBSTKsSzoSQztB8m605Swmee8G"], ["created_at", "2016-02-22 07:36:30.942918"], ["updated_at", "2016-02-22 07:36:30.942918"]] (0.6ms) commit transaction => #<User id: 5, name: "useraaa", created_at: "2016-02-22 07:36:30", updated_at: "2016-02-22 07:36:30", email: "exampleaaa@example.com", encrypted_password: "$2a$10$ySmHMDq8rrZJnVXuTAe5JemQIaXaBSTKsSzoSQztB8m...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil>
rspecで使う場合
Gemfileに以下を記述してbundle install
#Gemfile group :development, :test do gem 'rspec-rails' end
$ rails g rspec:install create .rspec create spec create spec/spec_helper.rb create spec/rails_helper.rb
spec/examplesにテストコードを追加していきます。
spec/examples/factory_girl_spec.rb
#spec/examples/factory_girl_spec.rb require 'rails_helper' user1 = FactoryGirl.build(:user, name: "user1") user2 = FactoryGirl.build(:user, name: "user2") RSpec.describe ApplicationHelper, :type => 'helper' do describe "use_factory_girl" do it 'should be user1 and user2' do expect(user1.name).to eq "user1" expect(user2.name).to eq "user2" end end end
これでbundle exec rakeすればテストが実行されます。
参考
File: GETTING_STARTED — Documentation for factory_girl (4.5.0)