Module: RSpec::Core::Subject::ExampleGroupMethods
- Included in:
- ExampleGroup
- Defined in:
- lib/rspec/core/subject.rb
Instance Attribute Summary collapse
-
#explicit_subject_block ⇒ Object
readonly
Returns the value of attribute explicit_subject_block.
Instance Method Summary collapse
-
#its(attribute, &block) ⇒ Object
Creates a nested example group named by the submitted
attribute
, and then generates an example using the submitted block. -
#subject(name = nil, &block) ⇒ Object
Declares a
subject
for an example group which can then be the implicit receiver (through delegation) of calls toshould
.
Instance Attribute Details
#explicit_subject_block ⇒ Object (readonly)
Returns the value of attribute explicit_subject_block.
204 205 206 |
# File 'lib/rspec/core/subject.rb', line 204 def explicit_subject_block @explicit_subject_block end |
Instance Method Details
#its(attribute, &block) ⇒ Object
Creates a nested example group named by the submitted attribute
,
and then generates an example using the submitted block.
The attribute can be a Symbol
or a String
. Given a String
with dots, the result is as though you concatenated that String
onto the subject in an expression.
When the subject is a Hash
, you can refer to the Hash keys by
specifying a Symbol
or String
in an array.
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/rspec/core/subject.rb', line 148 def its(attribute, &block) describe(attribute) do example do self.class.class_eval do define_method(:subject) do if defined?(@_subject) @_subject else @_subject = Array === attribute ? super()[*attribute] : _nested_attribute(super(), attribute) end end end instance_eval(&block) end end end |
#subject(name = nil, &block) ⇒ Object
Declares a subject
for an example group which can then be the
implicit receiver (through delegation) of calls to should
.
Given a name
, defines a method with that name which returns the
subject
. This lets you declare the subject once and access it
implicitly in one-liners and explicitly using an intention revealing
name.
195 196 197 198 199 200 201 202 |
# File 'lib/rspec/core/subject.rb', line 195 def subject(name=nil, &block) if name let(name, &block) subject { send name } else block ? @explicit_subject_block = block : explicit_subject || implicit_subject end end |