Module: RSpec::Core::MemoizedHelpers
- Included in:
- ExampleGroup
- Defined in:
- lib/rspec/core/memoized_helpers.rb
Overview
This module is included in ExampleGroup, making the methods available to be called from within example blocks.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#is_expected ⇒ void
Wraps the
subjectinexpectto make it the target of an expectation. -
#should(matcher = nil, message = nil) ⇒ void
When
shouldis called with no explicit receiver, the call is delegated to the object returned bysubject. -
#should_not(matcher = nil, message = nil) ⇒ void
Just like
should,should_notdelegates to the subject (implicit or explicit) of the example group. - #subject ⇒ void
Instance Method Details
#is_expected ⇒ void
This only works if you are using rspec-expectations.
Wraps the subject in expect to make it the target of an expectation.
Designed to read nicely for one-liners.
120 121 122 |
# File 'lib/rspec/core/memoized_helpers.rb', line 120 def is_expected expect(subject) end |
#should(matcher = nil, message = nil) ⇒ void
This only works if you are using rspec-expectations.
If you are using RSpec's newer expect-based syntax you may
want to use is_expected.to instead of should.
When should is called with no explicit receiver, the call is
delegated to the object returned by subject. Combined with an
implicit subject this supports very concise expressions.
80 81 82 83 |
# File 'lib/rspec/core/memoized_helpers.rb', line 80 def should(matcher=nil, =nil) enforce_value_expectation(matcher, 'should') RSpec::Expectations::PositiveExpectationHandler.handle_matcher(subject, matcher, ) end |
#should_not(matcher = nil, message = nil) ⇒ void
This only works if you are using rspec-expectations.
If you are using RSpec's newer expect-based syntax you may
want to use is_expected.to_not instead of should_not.
Just like should, should_not delegates to the subject (implicit or
explicit) of the example group.
100 101 102 103 |
# File 'lib/rspec/core/memoized_helpers.rb', line 100 def should_not(matcher=nil, =nil) enforce_value_expectation(matcher, 'should_not') RSpec::Expectations::NegativeExpectationHandler.handle_matcher(subject, matcher, ) end |
#subject ⇒ void
subject was contributed by Joe Ferris to support the one-liner
syntax embraced by shoulda matchers:
RSpec.describe Widget do
it { is_expected.to validate_presence_of(:name) }
# or
it { should validate_presence_of(:name) }
end
While the examples below demonstrate how to use subject
explicitly in examples, we recommend that you define a method with
an intention revealing name instead.
Because subject is designed to create state that is reset
between each example, and before(:context) is designed to setup
state that is shared across all examples in an example group,
subject is not intended to be used in a before(:context) hook.
57 58 59 60 61 62 |
# File 'lib/rspec/core/memoized_helpers.rb', line 57 def subject __memoized.fetch_or_store(:subject) do described = described_class || self.class..fetch(:description_args).first Class === described ? described.new : described end end |