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
subject
inexpect
to make it the target of an expectation. -
- (Object) should(matcher = nil, message = nil)
When
should
is 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_not
delegates 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 |