Faker宝石生成2-3个字母字符串

时间:2019-03-15 10:26:32

标签: ruby rspec faker

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

3 个答案:

答案 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/ }

但是也许最好在模型本身上添加属性,并在调用时引发错误。