diff --git a/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb b/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb index ea19b78ce..4ad7a0cf2 100644 --- a/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb +++ b/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb @@ -100,8 +100,14 @@ def on_block(node) add_offense(node, message: format(MSG, count: count, max: max)) end + def on_new_investigation + @example_group_memoized_helpers = {} + end + private + attr_reader :example_group_memoized_helpers + def all_helpers(node) [ *helpers(node), @@ -110,13 +116,14 @@ def all_helpers(node) end def helpers(node) - variable_nodes(node).map do |variable_node| - if variable_node.block_type? - variable_definition?(variable_node.send_node) - else # block-pass (`let(:foo, &bar)`) - variable_definition?(variable_node) + @example_group_memoized_helpers[node] ||= + variable_nodes(node).map do |variable_node| + if variable_node.block_type? + variable_definition?(variable_node.send_node) + else # block-pass (`let(:foo, &bar)`) + variable_definition?(variable_node) + end end - end end def variable_nodes(node)