Module: Spec::Example::Subject::ExampleMethods
- Included in:
- ExampleMethods
- Defined in:
- lib/spec/example/subject.rb
Instance Method Summary collapse
-
#should(matcher = nil) ⇒ Object
When
should
is called with no explicit receiver, the call is delegated to the object returned bysubject
. -
#should_not(matcher = 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(matcher = 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
65 66 67 68 69 70 71 |
# File 'lib/spec/example/subject.rb', line 65 def should(matcher=nil) if matcher subject.should(matcher) else subject.should end end |
#should_not(matcher = 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
81 82 83 84 85 86 87 |
# File 'lib/spec/example/subject.rb', line 81 def should_not(matcher=nil) if matcher subject.should_not(matcher) else subject.should_not end 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
51 52 53 |
# File 'lib/spec/example/subject.rb', line 51 def subject @subject ||= instance_eval(&self.class.subject) end |