Module: Spec::Example::Subject::ExampleMethods
- Included in:
- ExampleMethods
- Defined in:
- lib/spec/example/subject.rb
Instance Method Summary collapse
- #__should_for_example_group__ ⇒ Object
- #__should_not_for_example_group__ ⇒ Object
-
#should(matcher = nil, message = nil) ⇒ Object
When
should
is called with no explicit receiver, the call is delegated to the object returned bysubject
. -
#should_not(matcher = nil, message = nil) ⇒ Object
Just like
should
,should_not
delegates to the subject (implicit or explicit) of the example group. -
#subject ⇒ Object
Returns the subject defined in ExampleGroupMethods#subject.
Instance Method Details
#__should_for_example_group__ ⇒ Object
49 |
# File 'lib/spec/example/subject.rb', line 49 alias_method :__should_for_example_group__, :should |
#__should_not_for_example_group__ ⇒ Object
50 |
# File 'lib/spec/example/subject.rb', line 50 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
90 91 92 |
# File 'lib/spec/example/subject.rb', line 90 def should(matcher=nil, =nil) self == subject ? self.__should_for_example_group__(matcher) : subject.should(matcher,) 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
102 103 104 |
# File 'lib/spec/example/subject.rb', line 102 def should_not(matcher=nil, =nil) self == subject ? self.__should_not_for_example_group__(matcher) : subject.should_not(matcher,) end |
#subject ⇒ Object
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
76 77 78 |
# File 'lib/spec/example/subject.rb', line 76 def subject @subject ||= instance_eval(&self.class.subject) end |