RSpec/FactoryBot
RSpec/FactoryBot/AttributeDefinedStatically
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
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 }
RSpec/FactoryBot/CreateList
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
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
(default)
# bad
3.times { create :user }
# good
create_list :user, 3
# bad
3.times { create :user, age: 18 }
# good - index is used to alter the created models attributes
3.times { |n| create :user, age: n }
# good - contains a method call, may return different values
3.times { create :user, age: rand }
RSpec/FactoryBot/FactoryClassName
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
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.
RSpec/FactoryBot/SyntaxMethods
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
Yes |
Yes (Unsafe) |
2.7 |
- |
Use shorthands from FactoryBot::Syntax::Methods
in your specs.
Safety
The autocorrection is marked as unsafe because the cop
cannot verify whether you already include
FactoryBot::Syntax::Methods
in your test suite.
If you’re using Rails, add the following configuration to
spec/support/factory_bot.rb
and be sure to require that file in
rails_helper.rb
:
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
If you’re not using Rails:
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
config.before(:suite) do
FactoryBot.find_definitions
end
end