Read more

Don't build randomness into your factories

Henning Koch
February 24, 2014Software engineer at makandra GmbH

Tests are about 100% control over UI interaction and your test scenario. Randomness makes writing tests hard. You will also push tests that are green for you today, but red for a colleague tomorrow.

Illustration web development

Do you need DevOps-experts?

Your development team has a full backlog? No time for infrastructure architecture? Our DevOps team is ready to support you!

  • We build reliable cloud solutions with Infrastructure as code
  • We are experts in security, Linux and databases
  • We support your dev team to perform
Read more Show archive.org snapshot

That said, please don't do something like this:

Factory(:document) do |document|
  document.category { ['foo', 'bar', 'baz'].sample }
end

Instead do this:

Factory(:document) do |document|
  document.category 'foo'
end

The case against Faker

I even recommend to not use libraries like Faker Show archive.org snapshot . Faker makes awesome sample data, but at the risk of adding random strings to your screen. When your factory requires unique values for something, prefer numbering fixed strings intead:

FactoryBot.define do
  sequence(:first_name)   { |i| "First#{i}" }
  sequence(:last_name)    { |i| "Last#{i}" }
  sequence(:company_name) { |i| "Company #{i}" }
end

This creates ugly sample data like "First3 Last3", but e.g. doesn't make tests pass when they shouldn't.

Posted by Henning Koch to makandra dev (2014-02-24 12:31)