Usage

FakerMaker generates factories that build disposable objects for testing. Each factory has a name and a set of attributes.

FakerMaker.factory :user do 
  name {'Patsy Stone'}
  email {'patsy@fabulous.co.uk'}
  admin {false}
end

This will generate a User class with the attributes name, email and admin which will always return the same value.

It is possible to explicitly set the name of class which is particularly useful if there is a risk of redefining an existing one.

FakerMaker.factory :user, class: 'EmailUser' do 
  name {'Patsy Stone'}
  email {'patsy@fabulous.co.uk'}
  admin {false}
end

The class name will always be turned into a Ruby-style class name so email_user would become EmailUser.

Because of the block syntax in Ruby, defining attributes as Hashes requires two sets of curly brackets:

FakerMaker.factory :response do 
  body { { title: 'First Post', content: 'This is part of a hash' } }
end

Blocks are executed in the context of their instance. This means you can refer to variables already defined:

FakerMaker.factory :user, class: 'EmailUser' do 
  title {'Ms'}
  name {'Patsy Stone'}
  formal_name {"#{title} #{name}"}
  email {'patsy@fabulous.co.uk'}
  admin {false}
end

Fields with no block (or reference to another factory) will be nil.

FakerMaker.factory :request do 
  body
end

FakerMaker[:request].build.body
# => nil

Table of contents


Copyright © 2019-2020 Nigel Brookes-Thomas. Distributed by an MIT license.