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(&block) ⇒ Object
Defines an explicit subject for an example group which can then be the implicit receiver (through delegation) of calls to +should+.
Instance Attribute Details
#explicit_subject_block ⇒ Object (readonly)
Returns the value of attribute explicit_subject_block.
184 185 186 |
# File 'lib/rspec/core/subject.rb', line 184 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.
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/rspec/core/subject.rb', line 151 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(&block) ⇒ Object
Defines an explicit subject for an example group which can then be the implicit receiver (through delegation) of calls to +should+.
See +ExampleMethods#should+ for more information about this approach.
180 181 182 |
# File 'lib/rspec/core/subject.rb', line 180 def subject(&block) block ? @explicit_subject_block = block : explicit_subject || implicit_subject end |