class RuboCop::Cop::RSpec::InstanceVariable
Checks for instance variable usage in specs.
This cop can be configured with the option `AssignmentOnly` which will configure the cop to only register offenses on instance variable usage if the instance variable is also assigned within the spec
@example
# bad describe MyClass do before { @foo = [] } it { expect(@foo).to be_empty } end # good describe MyClass do let(:foo) { [] } it { expect(foo).to be_empty } end
@example with AssignmentOnly configuration
# rubocop.yml RSpec/InstanceVariable: AssignmentOnly: false # bad describe MyClass do before { @foo = [] } it { expect(@foo).to be_empty } end # allowed describe MyClass do it { expect(@foo).to be_empty } end # good describe MyClass do let(:foo) { [] } it { expect(foo).to be_empty } end
Constants
- EXAMPLE_GROUP_METHODS
- MSG
Public Instance Methods
on_block(node)
click to toggle source
# File lib/rubocop/cop/rspec/instance_variable.rb, line 60 def on_block(node) return unless spec_group?(node) ivar_usage(node) do |ivar, name| return if assignment_only? && !ivar_assigned?(node, name) add_offense(ivar, location: :expression) end end
Private Instance Methods
assignment_only?()
click to toggle source
# File lib/rubocop/cop/rspec/instance_variable.rb, line 72 def assignment_only? cop_config['AssignmentOnly'] end