Faker宝石生成短而无意义的字符串,而不是所描述的字符串。例如,Faker::Job.title
生成"et"
。如果我有一项功能测试,希望在页面上找不到Faker生成的字符串,则如果字符串为“ et”,它很可能会失败。当然,这是意外的行为,因为世界上没有人拥有职位"et"
。
这是我的代码,最近一次我检查它的标题与预期的一样,但是角色和类别却没有:
# frozen_string_literal: true
shared_context 'with signatory attributes' do
let(:first_name) { Faker::Name.first_name }
let(:last_name) { Faker::Name.last_name }
let(:email) { Faker::Internet.email }
let(:title) { Faker::Job.title }
let(:mobile) { Faker::Number.number(10) }
let(:employee_num) { Faker::Number.number(10) }
let(:role) { Faker::Job.title }
let(:category) { Faker::Job.title }
end
答案 0 :(得分:1)
貌似Faker尚未设置成现实的职位。但是,您可以随意创建自己的职位。我只想采样自己的自定义数组,就像这样:
let(:title) { %w[Admin Manager Engineer].sample }
答案 1 :(得分:0)
由于某种原因,它似乎从其Lorem Ipsum String Set中提取了字符串。您介意共享代码吗?
答案 2 :(得分:0)
您可以使用带单词边界的正则表达式匹配器,而不是仅使用短字符串,但是它仍然不能防弹。
let(:first_name) { /\b#{Faker::Name.first_name}\b/ }
但是也许最好在模型本身上添加属性,并在调用时引发错误。