Module: RuboCop::RSpec::ExpectOffense
- Defined in:
- lib/rubocop/rspec/expect_offense.rb
Overview
Mixin for ‘expect_offense` and `expect_no_offenses`
This mixin makes it easier to specify strict offense expectations in a declarative and visual fashion. Just type out the code that should generate a offense, annotate code by writing ‘^’s underneath each character that should be highlighted, and follow the carets with a string (separated by a space) that is the message of the offense. You can include multiple offenses in one code snippet.
If you do not want to specify an offense then use the companion method ‘expect_no_offenses`. This method is a much simpler assertion since it just inspects the source and checks that there were no offenses. The `expect_offense` method has to do more work by parsing out lines that contain carets.
Defined Under Namespace
Classes: AnnotatedSource
Instance Method Summary collapse
Instance Method Details
#expect_no_offenses(source, file = nil) ⇒ Object
60 61 62 63 64 |
# File 'lib/rubocop/rspec/expect_offense.rb', line 60 def expect_no_offenses(source, file = nil) inspect_source(source, file) expect(cop.offenses).to be_empty end |
#expect_offense(source, file = nil) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/rubocop/rspec/expect_offense.rb', line 47 def expect_offense(source, file = nil) expected_annotations = AnnotatedSource.parse(source) if expected_annotations.plain_source == source raise 'Use expect_no_offenses to assert that no offenses are found' end inspect_source(expected_annotations.plain_source, file) actual_annotations = expected_annotations.with_offense_annotations(cop.offenses) expect(actual_annotations.to_s).to eq(expected_annotations.to_s) end |