Module: RSpec::Core::Subject
- Included in:
- ExampleGroup
- Defined in:
- lib/rspec/core/subject.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#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 by the example group.
Class Method Details
.included(kls) ⇒ Object
7 8 9 10 11 12 13 |
# File 'lib/rspec/core/subject.rb', line 7 def self.included(kls) kls.class_eval do extend ClassMethods alias_method :__should_for_example_group__, :should alias_method :__should_not_for_example_group__, :should_not end end |
Instance Method Details
#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
53 54 55 |
# File 'lib/rspec/core/subject.rb', line 53 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
65 66 67 |
# File 'lib/rspec/core/subject.rb', line 65 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 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
39 40 41 |
# File 'lib/rspec/core/subject.rb', line 39 def subject @original_subject ||= instance_eval(&self.class.subject) end |