Module: Spec::Example::Subject::ExampleMethods

Included in:
ExampleMethods
Defined in:
lib/spec/example/subject.rb

Instance Method Summary collapse

Instance Method Details

#__should_for_example_group__Object



55
# File 'lib/spec/example/subject.rb', line 55

alias_method :__should_for_example_group__,     :should

#__should_not_for_example_group__Object



56
# File 'lib/spec/example/subject.rb', line 56

alias_method :__should_not_for_example_group__, :should_not

#should(matcher = nil, message = nil) ⇒ Object

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.

Examples

describe Person do
it { should be_eligible_to_vote }
end


96
97
98
# File 'lib/spec/example/subject.rb', line 96

def should(matcher=nil, message=nil)
  self == subject ? self.__should_for_example_group__(matcher) : subject.should(matcher,message)
end

#should_not(matcher = nil, message = nil) ⇒ Object

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

Examples

describe Person do
it { should_not be_eligible_to_vote }
end


108
109
110
# File 'lib/spec/example/subject.rb', line 108

def should_not(matcher=nil, message=nil)
  self == subject ? self.__should_not_for_example_group__(matcher) : subject.should_not(matcher,message)
end

#subjectObject

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.

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



82
83
84
# File 'lib/spec/example/subject.rb', line 82

def subject
  @subject ||= instance_eval(&self.class.subject)
end