在railstutorial中,为什么作者选择使用它( list 10.25):
http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users
namespace :db do
desc "Fill database with sample data"
task :populate => :environment do
Rake::Task['db:reset'].invoke
User.create!(:name => "Example User",
:email => "[email protected]",
:password => "foobar",
:password_confirmation => "foobar")
99.times do |n|
name = Faker::Name.name
email = "example-#{n+1}@railstutorial.org"
password = "password"
User.create!(:name => name,
:email => email,
:password => password,
:password_confirmation => password)
end
end
end
用假用户填充数据库,以及( list 7.16)
http://ruby.railstutorial.org/chapters/modeling-and-viewing-users-two
Factory.define :user do |user|
user.name "Michael Hartl"
user.email "[email protected]"
user.password "foobar"
user.password_confirmation "foobar"
end
似乎这两种方式都可以在数据库中创建用户(工厂女孩在数据库中创建用户)吗?创建测试用户的两种不同方式的原因是什么,它们有何不同?一种方法何时比另一种方法更合适?
最佳答案
在这些示例中,将Faker和Factory Girl用于两个不同的目的。
使用Faker创建了rake任务,可以轻松地填充数据库,通常是开发数据库。这样,您就可以在应用程序中浏览大量填充的虚假数据。
工厂定义使测试易于编写。例如,在您的RSpec测试中,您可以编写:
before(:each) do
@user = Factory(:user)
end
然后,@ user在随后的测试中可用。它将把这些更改写入测试数据库,但是请记住,每次运行测试时,这些更改都会被清除。
关于ruby-on-rails - Railstutorial : db:populate vs.工厂的女孩,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6319595/