Module: RSpec::Core::MemoizedHelpers
- Included in:
- ExampleGroup
- Defined in:
- lib/rspec/core/memoized_helpers.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary (collapse)
-
+ (Object) get_constant_or_yield(example_group, name)
private
Gets the named constant or yields.
Instance Method Summary (collapse)
-
- (Object) is_expected
Wraps the
subjectinexpectto make it the target of an expectation. -
- (Object) should(matcher = nil, message = nil)
When
shouldis called with no explicit receiver, the call is delegated to the object returned bysubject. -
- (Object) should_not(matcher = nil, message = nil)
Just like
should,should_notdelegates to the subject (implicit or explicit) of the example group. - - (Object) subject
Class Method Details
+ (Object) get_constant_or_yield(example_group, name)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Gets the named constant or yields.
On 1.9, constdefined? / constget take into account the
the inheritance by default, and accept an argument to
disable this behavior. It's important that we don't
consider inheritance here; each example group level that
uses a let should get its own LetDefinitions module.
555 556 557 558 559 560 561 |
# File 'lib/rspec/core/memoized_helpers.rb', line 555 def self.get_constant_or_yield(example_group, name) if example_group.const_defined?(name) example_group.const_get(name) else yield end end |
Instance Method Details
- (Object) is_expected
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.
114 115 116 |
# File 'lib/rspec/core/memoized_helpers.rb', line 114 def is_expected expect(subject) end |
- (Object) should(matcher = nil, message = nil)
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.
76 77 78 |
# File 'lib/rspec/core/memoized_helpers.rb', line 76 def should(matcher=nil, =nil) RSpec::Expectations::PositiveExpectationHandler.handle_matcher(subject, matcher, ) end |
- (Object) should_not(matcher = nil, message = nil)
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.
95 96 97 |
# File 'lib/rspec/core/memoized_helpers.rb', line 95 def should_not(matcher=nil, =nil) RSpec::Expectations::NegativeExpectationHandler.handle_matcher(subject, matcher, ) end |
- (Object) subject
subject was contributed by Joe Ferris to support the one-liner
syntax embraced by shoulda matchers:
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(: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.
51 52 53 54 55 56 57 58 |
# File 'lib/rspec/core/memoized_helpers.rb', line 51 def subject __memoized.fetch(:subject) do __memoized[:subject] = begin described = described_class || self.class.description Class === described ? described.new : described end end end |