class RuboCop::Cop::Minitest::AssertRespondTo
assert_respond_to(object, :some_method, ‘the message’)
assert_respond_to(object, :some_method)
# good
assert(object.respond_to?(:some_method), ‘the message’)
assert(object.respond_to?(:some_method))
# bad
@example
over ‘assert(object.respond_to?(:some_method))`.
This cop enforces the use of `assert_respond_to(object, :some_method)`
def autocorrect(node)
def autocorrect(node) lambda do |corrector| assert_with_respond_to(node) do |_, object, method, rest_args| custom_message = rest_args.first preferred = [object, method, custom_message] .compact.map(&:source).join(', ') replacement = "assert_respond_to(#{preferred})" corrector.replace(node.loc.expression, replacement) end end end
def on_send(node)
def on_send(node) assert_with_respond_to(node) do |over, object, method, rest_args| custom_message = rest_args.first preferred = [object, method, custom_message] .compact.map(&:source).join(', ') over = [over, custom_message].compact.map(&:source).join(', ') message = format(MSG, preferred: preferred, over: over) add_offense(node, message: message) end end