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.
describe Person do it { should be_eligible_to_vote } end
# File lib/spec/example/subject.rb, line 90 def should(matcher=nil, message=nil) self == subject ? self.__should_for_example_group__(matcher) : subject.should(matcher,message) end
Just like should, should_not delegates to the subject (implicit or explicit) of the example group.
describe Person do it { should_not be_eligible_to_vote } end
# File lib/spec/example/subject.rb, line 102 def should_not(matcher=nil, message=nil) self == subject ? self.__should_not_for_example_group__(matcher) : subject.should_not(matcher,message) end
Returns the subject defined in ExampleGroupMethods#subject. 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.
# 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
# File lib/spec/example/subject.rb, line 76 def subject @subject ||= instance_eval(&self.class.subject) end
Generated with the Darkfish Rdoc Generator 2.