如何为 Faker 输入 Rails 制作 shorthand?

How to make a shorthand for Faker typing in Rails?

多年来,我一直避免使用 factory_girlfaker,因为我厌倦了全部输入。有什么方法可以使用 moduleclasses 或 aliases 来更快更轻松地输入内容吗?谢谢。

在你的 test/test_helper.rbspec/rails_helper.rb (可能不同,取决于你的测试套件)你可以定义辅助函数,它可以被你所有的测试使用,包装特定的 FactoryBot 或您想使用的 Faker 通话。您可以像这样创建简写名称方法:

# Methods defined test/test_helper.rb or bottom of spec/rails_helper.rb
# You can name the methods whatever you like

# This returns the result of the Faker call
def first_name
  Faker::Name.first_name
end

# Or make the method names super short if you desire
def ln
  Faker::Name.last_name
end

# This returns a new (but not persisted) user object
def user_new
  FactoryBot.build(:user)
end

# Should return created user
def user_persisted
  FactoryBot.create(:user)
end


然后在您的测试中,您可以按原样调用该函数。您不必引用 class 或模块来调用它们。

命名约定由您决定。为了防止辅助方法的名称和模型属性之间的混淆,我可能会在辅助方法前加上 faker_factory_,但这取决于你。