RSpec/FactoryBot

RSpec/FactoryBot/AttributeDefinedStatically

Enabled by default Safe Supports autocorrection VersionAdded VersionChanged

Enabled

Yes

Yes

1.28

2.0

Always declare attribute values as blocks.

Examples

# bad
kind [:active, :rejected].sample

# good
kind { [:active, :rejected].sample }

# bad
closed_at 1.day.from_now

# good
closed_at { 1.day.from_now }

# bad
count 1

# good
count { 1 }

Configurable attributes

Name Default value Configurable values

Include

spec/factories.rb, spec/factories//.rb, features/support/factories//.rb

Array

RSpec/FactoryBot/CreateList

Enabled by default Safe Supports autocorrection VersionAdded VersionChanged

Enabled

Yes

Yes

1.25

2.0

Checks for create_list usage.

This cop can be configured using the EnforcedStyle option

Examples

EnforcedStyle: create_list

# bad
3.times { create :user }

# good
create_list :user, 3

# good
3.times { |n| create :user, created_at: n.months.ago }

EnforcedStyle: n_times

# bad
create_list :user, 3

# good
3.times { create :user }

Configurable attributes

Name Default value Configurable values

Include

**/*_spec.rb, **/spec/**/*, spec/factories.rb, spec/factories//.rb, features/support/factories//.rb

Array

EnforcedStyle

create_list

create_list, n_times

RSpec/FactoryBot/FactoryClassName

Enabled by default Safe Supports autocorrection VersionAdded VersionChanged

Enabled

Yes

Yes

1.37

2.0

Use string value when setting the class attribute explicitly.

This cop would promote faster tests by lazy-loading of application files. Also, this could help you suppress potential bugs in combination with external libraries by avoiding a preload of application files from the factory files.

Examples

# bad
factory :foo, class: Foo do
end

# good
factory :foo, class: 'Foo' do
end

Configurable attributes

Name Default value Configurable values

Include

spec/factories.rb, spec/factories//.rb, features/support/factories//.rb

Array