私のfactories.rbファイルで次のファクトリが定義されています。
require 'factory_girl'
FactoryGirl.define do
sequence(:email) {|n| "person-#{n}@example.com" }
factory :country do
...
end
factory :state do
country
...
end
factory :school do
name "Test School"
country
state
end
factory :user do
school
email
...
end
end
rspecでテストするFactoryGirl.create(:school)
と、記述子の1つを呼び出すと、「TestSchool」という名前の2つの学校が作成されます。
factorys.rbで定義されているファクトリは、保存されていないインスタンスオブジェクトの集まりにすぎないと思いましたが、なぜこの問題が発生しているのかを誰かが明確にできますか?
正確なrspecは次のとおりです。
require 'spec_helper'
describe "school login" do
it "displays a success message upon successful login to school",do
school = FactoryGirl.create(:school)
user = FactoryGirl.create(:user, :username => "jdoe")
School.all.each do |school|
puts school.name #2x => "Test School"
end
visit school_path(user.school)
click_link('login')
fill_in "username", :with => "jdoe"
fill_in "password", :with => "secret"
click_button "Sign in"
expect(page).to have_selector(".alert-success")
end
end