Class: RuboCop::Cop::RSpec::FactoryBotInBefore

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/rspec/factory_bot_in_before.rb

Overview

Forbids object creation (‘create`/`build`/`create_list`/`build_list`) inside a `before` block. Object creation belongs in `let`; `before` is for actions only.

Examples:

# bad
before { @user = create(:user) }

# good
let(:user) { create(:user) }

Constant Summary collapse

MSG =
'Do not create objects in `before` — use `let` for object creation.'
CREATION_METHODS =
%i[create build create_list build_list].freeze

Instance Method Summary collapse

Instance Method Details

#on_block(node) ⇒ Object Also known as: on_numblock, on_itblock



24
25
26
27
28
29
30
31
32
# File 'lib/rubocop/cop/rspec/factory_bot_in_before.rb', line 24

def on_block(node)
  return unless before_block?(node)

  node.each_node(:send) do |send|
    next unless CREATION_METHODS.include?(send.method_name) && send.receiver.nil?

    add_offense(send.loc.selector)
  end
end