Railsstutorial:db:populate vs. factory girl

|| 在railstutorial中,为什么作者选择使用它(清单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 => \"example@railstutorial.org\",
                 :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
用假用户填充数据库,以及(清单7.16) http://ruby.railstutorial.org/chapters/modeling-and-viewing-users-two
Factory.define :user do |user|
  user.name                  \"Michael Hartl\"
  user.email                 \"mhartl@example.com\"
  user.password              \"foobar\"
  user.password_confirmation \"foobar\"
end
似乎这两种方式都可以在数据库中创建用户(工厂女孩在数据库中创建用户)吗?创建测试用户的两种不同方式的原因是什么,它们有何不同?一种方法何时比另一种方法更合适?     
已邀请:
        在这些示例中,将Faker和Factory Girl用于两个不同的目的。 使用Faker创建了rake任务,可以轻松地填充数据库,通常是开发数据库。这样,您便可以在应用程序中浏览大量填充的虚假数据。 工厂定义使测试易于编写。例如,在您的RSpec测试中,您可以编写:
before(:each) do
 @user = Factory(:user)
end
然后,@ user在随后的测试中可用。它将把这些更改写入测试数据库,但是请记住,每次运行测试时,这些更改都会被清除。     

要回复问题请先登录注册