Sha256: 401b928baf41fa1d2b28e16e9f3d576dc963261c45a663eba519a55768510535

Contents?: true

Size: 1.42 KB

Versions: 150

Compression:

Stored size: 1.42 KB

Contents

Feature: double handling to_ary

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

      [obj].flatten # => obj.to_ary

  If `to_ary` raises a `NoMethodError`, Ruby sees that the object can not be coerced
  into an array and moves on to the next object.

  To support this, an RSpec double will raise a NoMethodError when it receives
  `to_ary` _even if it is set `as_null_object`_, unless `to_ary` is explicitly
  stubbed.

  Scenario: double receiving to_ary
    Given a file named "example.rb" with:
      """
      describe "#to_ary" do
        shared_examples "to_ary" do
          it "raises a NoMethodError" do
            expect { obj.to_ary }.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 "sent to a double as_null_object" do
          let(:obj) { double('obj').as_null_object }
          include_examples "to_ary"
        end

        context "sent to a 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

150 entries across 96 versions & 14 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.7.5 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
classiccms-0.7.4 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
classiccms-0.7.4 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.7.3 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
classiccms-0.7.3 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
tnargav-1.3.3 vendor/bundle/ruby/1.9.1/gems/rspec-mocks-2.11.3/features/method_stubs/to_ary.feature
tnargav-1.2.3 vendor/bundle/ruby/1.9.1/gems/rspec-mocks-2.11.3/features/method_stubs/to_ary.feature
classiccms-0.7.2 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
classiccms-0.7.2 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.7.1 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.7.1 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
classiccms-0.7.0 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.7.0 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.6.9 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.6.9 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
classiccms-0.6.8 vendor/bundle/gems/rspec-mocks-2.10.1/features/method_stubs/to_ary.feature
classiccms-0.6.8 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature
classiccms-0.6.7 vendor/bundle/gems/rspec-mocks-2.9.0/features/method_stubs/to_ary.feature