Class: RuboCop::Cop::RSpec::Be

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

Overview

Check for expectations where `be` is used without argument.

The `be` matcher is too generic, as it pass on everything that is not nil or false. If that is the exact intend, use `be_truthy`. In all other cases it's better to specify what exactly is the expected value.

Examples:


# bad
expect(foo).to be

# good
expect(foo).to be_truthy
expect(foo).to be 1.0
expect(foo).to be(true)

Constant Summary collapse

MSG =
"Don't use `be` without an argument."

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

#be_without_args(node) ⇒ Object


26
27
28
# File 'lib/rubocop/cop/rspec/be.rb', line 26

def_node_matcher :be_without_args, <<-PATTERN
  (send _ #Runners.all $(send nil? :be))
PATTERN

#on_send(node) ⇒ Object


30
31
32
33
34
# File 'lib/rubocop/cop/rspec/be.rb', line 30

def on_send(node)
  be_without_args(node) do |matcher|
    add_offense(matcher.loc.selector)
  end
end