class RuboCop::Cop::RSpec::EmptyOutput

Check that the ‘output` matcher is not called with an empty string.

@example

# bad
expect { foo }.to output('').to_stdout
expect { bar }.not_to output('').to_stderr

# good
expect { foo }.not_to output.to_stdout
expect { bar }.to output.to_stderr

Constants

MSG
RESTRICT_ON_SEND

Public Instance Methods

on_send(send_node) click to toggle source
# File lib/rubocop/cop/rspec/empty_output.rb, line 34
def on_send(send_node)
  matching_empty_output(send_node) do |node|
    runner = send_node.method?(:to) ? 'not_to' : 'to'
    message = format(MSG, runner: runner)
    add_offense(node, message: message) do |corrector|
      corrector.replace(send_node.loc.selector, runner)
      corrector.replace(node, 'output')
    end
  end
end