在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/

10-13 04:42