Ruby on Rails - defining factories for factory girl in ruby on rails- ruby on rails tutorial - rails guides - rails tutorial - ruby rails
defining factories for factory girl
If you have a ActiveRecord User class with name and email attributes, you could create a factory for it by making the FactoryGirl guess it:
FactoryGirl.define do
factory :user do # it will guess the User class
name "John"
email "john@example.com"
end
end
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
Or else you can make it explicit and even change its name:
FactoryGirl.define do
factory :user_jack, class: User do
name "Jack"
email "jack@example.com"
end
end
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
Then in your spec you can use the FactoryGirl's methods with these, like this:
# To create a non saved instance of the User class filled with John's data
build(:user)
# and to create a non saved instance of the User class filled with Jack's data
build(:user_jack)
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
The most common methods are:
# Build returns a non saved instance
user = build(:user)
# Create returns a saved instance
user = create(:user)
# Attributes_for returns a hash of the attributes used to build an instance
attrs = attributes_for(:user)