- Extended by:
- Defined in:
Checks if an example group defines `subject` multiple times.
The autocorrect behavior for this cop depends on the type of duplication:
- If multiple named subjects are defined then this probably indicates that the overwritten subjects (all subjects except the last definition) are effectively being used to define helpers. In this case they are replaced with `let`. - If multiple unnamed subjects are defined though then this can *only* be dead code and we remove the overwritten subject definitions. - If subjects are defined with `subject!` then we don't autocorrect. This is enough of an edge case that people can just move this to a `before` hook on their own
Constant Summary collapse
- MSG =
'Do not set more than one subject per example group'
Instance Method Summary collapse
Methods inherited from
Methods included from
Instance Method Details
#on_block(node) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52
# File 'lib/rubocop/cop/rspec/multiple_subjects.rb', line 42 def on_block(node) return unless example_group?(node) subjects = ::::.(node).subjects subjects[0...-1].each do |subject| add_offense(subject) do |corrector| autocorrect(corrector, subject) end end end