2
我有一個具有has_one配置文件的用戶模型。當我像這樣創建用戶時,配置文件會自動創建;當我已經在模型中創建關聯時,如何測試與FactoryGirl具有has_one關聯的模型
class User < ActiveRecord::Base
has_one :profile, dependent: :destroy
after_create :create_profile
end
class Profile < ActiveRecord::Base
belongs_to :user
end
這一切都很好,每個用戶都會創建一個默認配置文件。
雖然我想對我的用戶模型進行一些測試,但這正是我掙扎的地方。
我使用FactoryGirl並希望創建這樣一個用戶,以便
FactoryGirl.define do
factory :user do
sequence(:email) {|n| "user_#{n}@example.com"}
sequence(:username) {|n| "user_#{n}"}
password "secret"
factory :activated_user do
before(:create) {|user| user.activated = true}
association :profile, factory: :profile_for_activated_user
end
end
end
FactoryGirl.define do
factory :profile do
factory :profile_for_activated_user do
first_name "Johnny"
last_name "User"
end
end
end
這是不如意的事情對我來說。 after_create回調(我想要的)會覆蓋FactoryGirl創建的關聯(在FactoryGirl.create :activated_user
上),所以我最終得到一個空白的配置文件和失敗的測試。我是否需要改變在模型中創建關聯的方式(我不應該 - 我不應該修改我的代碼以適合我的測試工具),還是有辦法在FactoryGirl中進行管理?我應該在FactoryGirl中創建用戶後,在我的測試中手動分配配置文件屬性?
這是偉大的,雖然after_build給予了取消通知。我在(:build)之後使用,它完美地工作。謝謝。 – brad