Module: RSpec::Core::MemoizedHelpers

### Home Classes Methods

### In Files

- lib/rspec/core/memoized_helpers.rb

### Namespace

- MODULE RSpec::Core::MemoizedHelpers::ClassMethods
- CLASS RSpec::Core::MemoizedHelpers::BeforeAllMemoizedHash

### Methods

- #should
- #should_not
- #subject

### Included Modules

- Module

### Class/Module Index

Quicksearch

- RSpec
- RSpec::Core
- RSpec::Core::BacktraceCleaner
- RSpec::Core::BacktraceFormatter
- RSpec::Core::CommandLine
- RSpec::Core::Configuration
- RSpec::Core::Configuration::MustBeConfiguredBeforeExampleGroupsError
- RSpec::Core::ConfigurationOptions
- RSpec::Core::ConstMissing
- RSpec::Core::DRbCommandLine
- RSpec::Core::DSL
- RSpec::Core::Deprecation
- RSpec::Core::DrbOptions
- RSpec::Core::Example
- RSpec::Core::Example::NotPendingExampleFixed
- RSpec::Core::Example::Procsy
- RSpec::Core::ExampleGroup
- RSpec::Core::Extensions
- RSpec::Core::Extensions::InstanceEvalWithArgs
- RSpec::Core::Extensions::ModuleEvalWithArgs
- RSpec::Core::Extensions::Ordered
- RSpec::Core::Extensions::Ordered::ExampleGroups
- RSpec::Core::Extensions::Ordered::Examples
- RSpec::Core::FilterManager
- RSpec::Core::FilterManager::BackwardCompatibility
- RSpec::Core::FilterManager::Describable
- RSpec::Core::Formatters
- RSpec::Core::Formatters::BaseFormatter
- RSpec::Core::Formatters::BaseTextFormatter
- RSpec::Core::Formatters::DeprecationFormatter
- RSpec::Core::Formatters::DocumentationFormatter
- RSpec::Core::Formatters::Helpers
- RSpec::Core::Formatters::HtmlFormatter
- RSpec::Core::Formatters::HtmlPrinter
- RSpec::Core::Formatters::JsonFormatter
- RSpec::Core::Formatters::ProgressFormatter
- RSpec::Core::Formatters::SnippetExtractor
- RSpec::Core::Formatters::SnippetExtractor::NullConverter
- RSpec::Core::Formatters::TextMateFormatter
- RSpec::Core::Hooks
- RSpec::Core::Hooks::AfterAllHook
- RSpec::Core::Hooks::AfterHook
- RSpec::Core::Hooks::AroundHook
- RSpec::Core::Hooks::AroundHookCollection
- RSpec::Core::Hooks::BeforeHook
- RSpec::Core::Hooks::GroupHookCollection
- RSpec::Core::Hooks::Hook
- RSpec::Core::Hooks::HookCollection
- RSpec::Core::Hooks::HookCollectionAliases
- RSpec::Core::Hooks::RegistersGlobals
- RSpec::Core::MemoizedHelpers
- RSpec::Core::MemoizedHelpers::BeforeAllMemoizedHash
- RSpec::Core::MemoizedHelpers::ClassMethods
- RSpec::Core::Metadata
- RSpec::Core::Metadata::ExampleMetadataHash
- RSpec::Core::Metadata::GroupMetadataHash
- RSpec::Core::Metadata::MetadataHash
- RSpec::Core::MetadataHashBuilder
- RSpec::Core::MetadataHashBuilder::Common
- RSpec::Core::MetadataHashBuilder::WithConfigWarning
- RSpec::Core::MetadataHashBuilder::WithDeprecationWarning
- RSpec::Core::MockFrameworkAdapter
- RSpec::Core::Parser
- RSpec::Core::Pending
- RSpec::Core::Pending::PendingDeclaredInExample
- RSpec::Core::Pending::PendingExampleFixedError
- RSpec::Core::ProjectInitializer
- RSpec::Core::RakeTask
- RSpec::Core::Reporter
- RSpec::Core::RubyProject
- RSpec::Core::Runner
- RSpec::Core::SharedContext
- RSpec::Core::SharedExampleGroup
- RSpec::Core::SharedExampleGroup::Collection
- RSpec::Core::SharedExampleGroup::Registry
- RSpec::Core::SharedExampleGroup::TopLevelDSL
- RSpec::Core::Time
- RSpec::Core::Version
- RSpec::Core::World
- RSpec::Rake
- RSpec::Runner
- Autotest
- Autotest::Rspec2
- Kernel

No matching classes.

# RSpec::Core::MemoizedHelpers

### Public Instance Methods

should(matcher=nil, message=nil) click to toggle source

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.

@example

    describe Person do
      it { should be_eligible_to_vote }
    end

@see subject

    # File lib/rspec/core/memoized_helpers.rb, line 67
    def should(matcher=nil, message=nil)
      RSpec::Expectations::PositiveExpectationHandler.handle_matcher(subject, matcher, message)
    end

should_not(matcher=nil, message=nil) click to toggle source

Just like `should`, `should_not` delegates to the subject (implicit or explicit) of the example group.

@example

    describe Person do
      it { should_not be_eligible_to_vote }
    end

@see subject

    # File lib/rspec/core/memoized_helpers.rb, line 81
    def should_not(matcher=nil, message=nil)
      RSpec::Expectations::NegativeExpectationHandler.handle_matcher(subject, matcher, message)
    end

subject() click to toggle source

@note `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.

@example

    # explicit declaration of subject
    describe Person do
      subject { Person.new(:birthdate => 19.years.ago) }
      it "should be eligible to vote" do
        subject.should be_eligible_to_vote
        # ^ ^ explicit reference to subject not recommended
      end
    end

    # implicit subject => { Person.new }
    describe Person do
      it "should be eligible to vote" do
        subject.should be_eligible_to_vote
        # ^ ^ explicit reference to subject not recommended
      end
    end

    # one-liner syntax - should is invoked on subject
    describe Person do
      it { should be_eligible_to_vote }
    end

@note 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.

@see should

    # 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.