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

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

我想用它来为移动和网络甚至可能的API驱动UI自动化测试时生成动态测试数据。

我知道我可以创建一些自定义助手类/方法并使用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 initializeinitialize必须不使用任何参数,就像ActiveRecord模型一样。 所以最简单的方法就是像这样写User

 class User attr_accessor :firstname, :lastname, :age end 

如果您确定需要一个需要参数的initialize , 可以使用factory_girl的initialize_with告诉它如何实例化您的类 。