Module: RSpec::Core::MemoizedHelpers
- Included in:
- ExampleGroup
- Defined in:
- lib/rspec/core/memoized_helpers.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#should(matcher = nil, message = nil) ⇒ Object
When
shouldis called with no explicit receiver, the call is delegated to the object returned bysubject. -
#should_not(matcher = nil, message = nil) ⇒ Object
Just like
should,should_notdelegates to the subject (implicit or explicit) of the example group. - #subject ⇒ Object
Instance Method Details
#should(matcher = nil, message = nil) ⇒ Object
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.
67 68 69 |
# File 'lib/rspec/core/memoized_helpers.rb', line 67 def should(matcher=nil, =nil) RSpec::Expectations::PositiveExpectationHandler.handle_matcher(subject, matcher, ) end |
#should_not(matcher = nil, message = nil) ⇒ Object
Just like should, should_not delegates to the subject (implicit or
explicit) of the example group.
81 82 83 |
# File 'lib/rspec/core/memoized_helpers.rb', line 81 def should_not(matcher=nil, =nil) RSpec::Expectations::NegativeExpectationHandler.handle_matcher(subject, matcher, ) end |
#subject ⇒ Object
subject was contributed by Joe Ferris to support the one-liner
syntax embraced by shoulda matchers:
describe Widget do
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(:all) 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(:all) hook. RSpec 2.13.1 prints
a warning when you reference a subject from before(:all) and we plan
to have it raise an error in RSpec 3.
47 48 49 50 51 52 53 54 |
# File 'lib/rspec/core/memoized_helpers.rb', line 47 def subject __memoized.fetch(:subject) do __memoized[:subject] = begin described = described_class || self.class.description Class === described ? described.new : described end end end |