class RuboCop::Cop::RSpec::InstanceSpy


end
expect(foo).to have_received(:bar)
foo = instance_spy(Foo)
it do
# good
end
expect(foo).to have_received(:bar)
foo = instance_double(Foo).as_null_object
it do
# bad
@example
Checks for ‘instance_double` used with `have_received`.

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    replacement = 'instance_spy'
    corrector.replace(node.loc.selector, replacement)
    double_source_map = node.parent.loc
    as_null_object_range = double_source_map
      .dot
      .join(double_source_map.selector)
    corrector.remove(as_null_object_range)
  end
end

def on_block(node)

def on_block(node)
  return unless example?(node)
  null_double(node) do |var, receiver|
    have_received_usage(node) do |expected|
      add_offense(receiver, :expression) if expected == var
    end
  end
end