如何为 Faker 输入 Rails 制作 shorthand?
How to make a shorthand for Faker typing in Rails?
多年来,我一直避免使用 factory_girl
和 faker
,因为我厌倦了全部输入。有什么方法可以使用 module
、class
es 或 alias
es 来更快更轻松地输入内容吗?谢谢。
在你的 test/test_helper.rb
或 spec/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_
,但这取决于你。
多年来,我一直避免使用 factory_girl
和 faker
,因为我厌倦了全部输入。有什么方法可以使用 module
、class
es 或 alias
es 来更快更轻松地输入内容吗?谢谢。
在你的 test/test_helper.rb
或 spec/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_
,但这取决于你。