Class Index [+]

Quicksearch

RSpec::Core::Subject::ExampleMethods

Public Instance Methods

_attribute_chain(attribute) click to toggle source
    # File lib/rspec/core/subject.rb, line 86
86:         def _attribute_chain(attribute)
87:           attribute.to_s.split('.')
88:         end
_nested_attribute(subject, attribute) click to toggle source
    # File lib/rspec/core/subject.rb, line 90
90:         def _nested_attribute(subject, attribute)
91:           _attribute_chain(attribute).inject(subject) do |inner_subject, attr|
92:             inner_subject.send(attr)
93:           end
94:         end
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 (see subject), this supports very concise expressions.

@example

  describe Person do
    it { should be_eligible_to_vote }
  end
    # File lib/rspec/core/subject.rb, line 68
68:           def should(matcher=nil, message=nil)
69:             RSpec::Expectations::PositiveExpectationHandler.handle_matcher(subject, matcher, message)
70:           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
    # File lib/rspec/core/subject.rb, line 80
80:           def should_not(matcher=nil, message=nil)
81:             RSpec::Expectations::NegativeExpectationHandler.handle_matcher(subject, matcher, message)
82:           end
subject() click to toggle source

Returns the subject defined by the example group. The subject block is only executed once per example, the result of which is cached and returned by any subsequent calls to `subject`.

If a class is passed to `describe` and no subject is explicitly declared in the example group, then `subject` will return a new instance of that class.

@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 specs, we think it works best for extensions like
  shoulda, custom matchers, and shared example groups, where it is
  not referenced explicitly in specs.

@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
    end
  end

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

  describe Person do
    # one liner syntax - should is invoked on subject
    it { should be_eligible_to_vote }
  end
    # File lib/rspec/core/subject.rb, line 47
47:         def subject
48:           if defined?(@original_subject)
49:             @original_subject
50:           else
51:             @original_subject = instance_eval(&self.class.subject)
52:           end
53:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.