Module: Spec::Example::Subject::ExampleGroupMethods

Included in:
ExampleGroupMethods
Defined in:
lib/vendor/plugins/rspec/lib/spec/example/subject.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#explicit_subject_blockObject (readonly)

:nodoc:



30
31
32
# File 'lib/vendor/plugins/rspec/lib/spec/example/subject.rb', line 30

def explicit_subject_block
  @explicit_subject_block
end

Instance Method Details

#its(attribute, &block) ⇒ Object



23
24
25
26
27
28
# File 'lib/vendor/plugins/rspec/lib/spec/example/subject.rb', line 23

def its(attribute, &block)
  describe(attribute) do
    define_method(:subject) { super().send(attribute) }
    it(&block)
  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.

Examples

describe CheckingAccount, "with $50" do
  subject { CheckingAccount.new(:amount => 50, :currency => :USD) }
  it { should have_a_balance_of(50, :USD) }
  it { should_not be_overdrawn }
  its(:currency) { should == :USD }
end

See ExampleMethods#should for more information about this approach.



18
19
20
21
# File 'lib/vendor/plugins/rspec/lib/spec/example/subject.rb', line 18

def subject(&block)
  block.nil? ?
    explicit_subject || implicit_subject : @explicit_subject_block = block
end