Sha256: 6f20d830531d3f3cd1e346ff319badcc5c326acfd676c9e3c0ec44853860362c

Contents?: true

Size: 1.27 KB

Versions: 4

Compression:

Stored size: 1.27 KB

Contents

Feature: double handling to_ary

  Ruby implicitly sends to_ary to any objects in an Array when the array
  receives `flatten`:

      [obj].flatten # => obj.to_ary

  To support this, an RSpec double will raise a NoMethodError when it receives
  `to_ary`, unless that method is explicitly stubbed.

  Scenario: double receiving to_ary
    Given a file named "example.rb" with:
      """
      describe "a double receiving to_ary" do
        shared_examples "to_ary" do
          it "returns nil" do
            expect do
              obj.to_ary.should be_nil
            end.to raise_error(NoMethodError)
          end

          it "can be overridden with a stub" do
            obj.stub(:to_ary) { :non_nil_value }
            obj.to_ary.should be(:non_nil_value)
          end

          it "supports Array#flatten" do
            obj = double('foo')
            [obj].flatten.should eq([obj])
          end
        end

        context "double as_null_object" do
          let(:obj) { double('obj').as_null_object }
          include_examples "to_ary"
        end

        context "double without as_null_object" do
          let(:obj) { double('obj') }
          include_examples "to_ary"
        end
      end
     """
    When I run `rspec example.rb`
    Then the examples should all pass

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rspec-mocks-2.6.0 features/method_stubs/to_ary.feature
rspec-mocks-2.6.0.rc6 features/method_stubs/to_ary.feature
rspec-mocks-2.6.0.rc4 features/method_stubs/to_ary.feature
rspec-mocks-2.6.0.rc2 features/method_stubs/to_ary.feature