我正在关注Michael Hartl的在线教程,在清单9.42中,我无法理解代码。
FactoryGirl.define do
factory :user do
sequence(:name) { |n| "Person #{n}" }
sequence(:email) { |n| "person_#{n}@example.com"}
password "foobar"
password_confirmation "foobar"
factory :admin do
admin true
end
end
end
然后在清单9.43中创建了管理员
describe "as an admin user" do
let(:admin) { FactoryGirl.create(:admin) }
我不明白的是如何创建一个没有任何管理员的管理员 代码
sequence(:name) { |n| "Person #{n}" }
sequence(:email) { |n| "person_#{n}@example.com"}
password "foobar"
password_confirmation "foobar"
在管理区内?
似乎:admin block嵌套在:user block中,所以:{user}在FactoryGirl.create(:admin)
期间在用户块内创建一个用户名,电子邮件,密码的管理员执行:用户块代码?
是吗? 谢谢!
答案 0 :(得分:4)
假设您已经知道FactoryGirl library works的方式,那么您的问题的解释是:admin
工厂在:user
工厂内定义
FactoryGirl.define do
factory :user do
...
factory :admin do
admin true
end
end
end
在这种情况下,:admin
将继承用户的所有属性,以及特定的admin: true
设置。
FactoryGirl.create(:admin)
答案 1 :(得分:0)
是的,这是正确的。创建嵌套的FactoryGirl对象时,该对象将继承其父级的所有属性。