I got following problem: In my application i use inheritance to define my user model:
class User
include Mongoid::Document
field :name...
field :bla...
end
class CustomUser < User
field :customuserfield...
end
How can i write factories to map this Class hirachie in my specs. And keep up writing with don´t repeat yourself.
FactoryGirl.define do
factory :user do
name "name"
bla "bla"
factory :custom_user do
customfield "customfield"
end
end
end
This doesn´t work for me because the class is also "User". With "User" i got a invalid error because the customfields are not defiend here. Is there a good practice, way or method to relize something like that.
Thanh
You can try this:
factory :user do
name "name"
bla "bla"
end
factory :custom_user, class: CustomUser, parent: :user do
customfield "customfield"
end
For more info: Inheritance.
Just add the class: CustomUser to :custom_user factory. That works for me. When you nested in :user it means parent is User, but it is simpler.
FactoryGirl.define do
factory :user do
name "name"
bla "bla"
factory :custom_user, class: CustomUser do
customfield "customfield"
end
end
end
来源:https://stackoverflow.com/questions/13343876/how-to-define-factories-with-a-inheritance-user-model