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

she*_*ert 6 ruby rspec factory-bot

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

我想用它来为移动和网络推动UI自动化测试时生成即时测试数据,甚至可能是API.

我知道我可以创建一些自定义帮助器类/方法并使用getter和setter等,但我认为使用这个很棒的小宝石会很好.

我搜索得相当广泛,并试图建立一个基本的RSpec项目(我也试过Cucumber),但无济于事.我似乎仍然需要使用相关登录实例化类以便使用它.

FactoryGirl.define do
  factory :user  do
    firstname { Faker::Name.first_name }
    lastname { Faker::Name.last_name }
    age { 1 + rand(100) }
  end
end
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试在RSpec文件中调用它...

describe...
  it...
    user = build_stubbed(:user)
  end
end
Run Code Online (Sandbox Code Playgroud)

我也阅读了文档并尝试了所有其他变体,我只是继续...

 Failure/Error: user = build_stubbed(:user)
 NameError:
   uninitialized constant User
Run Code Online (Sandbox Code Playgroud)

这表明我需要一个名为User的类,包含所有逻辑.

Dav*_*uth 6

你的猜测是正确的 - 你还是要自己写User课.factory_girl适用于非ActiveRecord类,但它不会为您编写它们.

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

class User
  attr_accessor :firstname, :lastname, :age
end
Run Code Online (Sandbox Code Playgroud)

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