Указание минимальной длины при использовании FFaker :: Internet.user_name - PullRequest
0 голосов
/ 27 июня 2018

У меня есть спецификация, которая продолжает выходить из строя, потому что FFaker :: Internet.user_name генерирует слово длиной менее 5 символов.

Как указать минимальную длину в этом stmt:

username { FFaker::Internet.user_name }

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Из того, что я вижу, вы пытаетесь использовать FFaker на вашем заводе. Зачем слишком усложнять вещи для ваших спецификаций, когда вы можете определить sequence

sequence(:username) do |n|
   "username-#{n}"
end

Но вопрос верный, и у вас могут быть некоторые законные потребности использовать ffaker, и есть много способов сделать это. Вы можете просто объединить имя пользователя дважды, почему бы и нет?

username { FFaker.username + FFaker.username }

Или продолжайте искать имя пользователя с минимальной длиной:

username do
   do
     name = FFaker.username
   while name.length < 5
   name
end

Или monkeypatch ffaker и реализуйте его самостоятельно https://github.com/ffaker/ffaker/blob/0578f7fd31c9b485e9c6fa15f25b3eca724790fe/lib/ffaker/internet.rb#L43 + https://github.com/ffaker/ffaker/blob/0578f7fd31c9b485e9c6fa15f25b3eca724790fe/lib/ffaker/name.rb#L75

например

class FFaker
  def long_username(min_length = 5)
    fetch_sample(FIRST_NAMES.select {|name| name.length >= min_lenght })
  end
end
0 голосов
/ 28 июня 2018

Есть много способов достичь этого, но если бы мне пришлось это сделать, я бы сделал что-то вроде

(FFaker::Internet.user_name + '___')[0...5]
#=> "Lily_"

Есть три подчеркивания, потому что после быстрого просмотра списка имен я обнаружил, что минимальная длина имени составляет два символа, поэтому два плюс три всегда будут содержать не менее пяти символов.

Я беру только пятисимвольную подстроку, чтобы не всегда иметь конечное подчеркивание, но это только мое личное предпочтение, вы можете использовать имя пользователя плюс три подчеркивания, и ваш тестовый сценарий подойдет.

0 голосов
/ 28 июня 2018

Вы не можете, но вы можете сделать FFaker :: Name.name.join, это генерирует имя и отчество

...