Module: RSpec::Core::Subject::ExampleMethods

Included in:
ExampleGroup
Defined in:
lib/rspec/core/subject.rb

Instance Method Summary collapse

Instance Method Details

#subjectObject

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.

Examples:


# explicit subject defined by the subject method
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

30
31
32
33
34
35
36
# File 'lib/rspec/core/subject.rb', line 30

def subject
  if defined?(@original_subject)
    @original_subject
  else
    @original_subject = instance_eval(&self.class.subject)
  end
end