Ruby 使用不带Rails、ActiveRecord或任何带RSpec的数据库的FactoryGirl

Ruby 使用不带Rails、ActiveRecord或任何带RSpec的数据库的FactoryGirl,ruby,rspec,factory-bot,Ruby,Rspec,Factory Bot,我想知道是否有人知道在没有上述任何先决条件的情况下是否可以使用FactoryGirl 我想在驱动移动和web的UI自动化测试时使用它来生成动态测试数据,甚至可能是API 我知道我可以创建一些定制的助手类/方法,并使用getter和setter等,但我认为使用这个很棒的小gem会很好 我已经进行了广泛的搜索,并试图建立一个基本的RSpec项目(我也尝试了Cucumber),但没有结果。似乎我仍然需要用相关的登录名实例化类,以便使用它 FactoryGirl.define do factory

我想知道是否有人知道在没有上述任何先决条件的情况下是否可以使用FactoryGirl

我想在驱动移动和web的UI自动化测试时使用它来生成动态测试数据,甚至可能是API

我知道我可以创建一些定制的助手类/方法,并使用getter和setter等,但我认为使用这个很棒的小gem会很好

我已经进行了广泛的搜索,并试图建立一个基本的RSpec项目(我也尝试了Cucumber),但没有结果。似乎我仍然需要用相关的登录名实例化类,以便使用它

FactoryGirl.define do
  factory :user  do
    firstname { Faker::Name.first_name }
    lastname { Faker::Name.last_name }
    age { 1 + rand(100) }
  end
end
如果我试图在RSpec文件中调用它

describe...
  it...
    user = build_stubbed(:user)
  end
end
我也阅读了文档,尝试了所有其他的变体,我只是不断得到

 Failure/Error: user = build_stubbed(:user)
 NameError:
   uninitialized constant User
这表明我需要一个名为User的类,该类具有所有逻辑。

您的猜测是正确的——您仍然需要自己编写
User
类。factory_girl可以很好地处理非ActiveRecord类,但它不能为您编写这些类

默认情况下,factory_girl通过调用不带参数的
new
来构造实例,因此您的类不应该
def initialize
或者
initialize
必须不带参数,就像ActiveRecord模型一样。因此,最简单的方法就是这样编写
User

class User
  attr_accessor :firstname, :lastname, :age
end
如果您决定需要一个需要参数的
initialize
,。

也可以这样考虑:
User=Struct.new:firstname,:lastname,:age
。很好的解释。