Class: RuboCop::Cop::RSpec::ExampleLength

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

Overview

Checks for long examples.

A long example is usually more difficult to understand. Consider extracting out some behaviour, e.g. with a `let` block, or a helper method.

You can set literals you want to fold with `CountAsOne`. Available are: 'array', 'hash', and 'heredoc'. Each literal will be counted as one line regardless of its actual size.

Examples:

# bad
it do
  service = described_class.new
  more_setup
  more_setup
  result = service.call
  expect(result).to be(true)
end

# good
it do
  service = described_class.new
  result = service.call
  expect(result).to be(true)
end

CountAsOne: ['array', 'heredoc']


it do
  array = [         # +1
    1,
    2
  ]

  hash = {          # +3
    key: 'value'
  }

  msg = <<~HEREDOC  # +1
    Heredoc
    content.
  HEREDOC
end                 # 5 points

Constant Summary collapse

LABEL =
'Example'

Instance Method Summary collapse

Methods inherited from Base

inherited, #on_new_investigation

Methods included from RSpec::Language::NodePattern

#block_pattern, #send_pattern

Methods included from RSpec::Language

#example?, #example_group?, #example_group_with_body?, #hook?, #include?, #let?, #rspec?, #shared_group?, #spec_group?, #subject?

Instance Method Details

#on_block(node) ⇒ Object


55
56
57
58
59
# File 'lib/rubocop/cop/rspec/example_length.rb', line 55

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

  check_code_length(node)
end