Sha256: ef643c259bc2dbee81a6926ece503119bf8386275988cdd1587e92d010f12b0d

Contents?: true

Size: 875 Bytes

Versions: 4

Compression:

Stored size: 875 Bytes

Contents

require "spec_helper"

module MethodMissingSpecs
  class A
    def method_missing(mid, *args)
      [mid, args]
    end
  end

  class B
    def method_missing(mid, *args, &block)
      [mid, block]
    end
  end
end

describe "method_missing" do
  before do
    @obj = MethodMissingSpecs::A.new
  end

  it "should pass the missing method name as first argument" do
    @obj.foo.should eq([:foo, []])
  end

  it "should correctly pass arguments to method_missing" do
    @obj.bar(1, 2, 3).should eq([:bar, [1, 2, 3]])
  end

  it "should pass blocks to method_missing" do
    obj = MethodMissingSpecs::B.new
    proc = proc { 1 }
    obj.baz(1, 2, &proc).should eq([:baz, proc])
  end
end

describe "BasicObject#method_missing" do
  it "raises an error for the missing method" do
    lambda {
      BasicObject.new.foo_bar_baz
    }.should raise_error(Exception)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
opal-0.3.41 spec/core_ext/method_missing_spec.rb
opal-0.3.40 spec/core_ext/method_missing_spec.rb
opal-0.3.39 spec/core_ext/method_missing_spec.rb
opal-0.3.38 spec/core_ext/method_missing_spec.rb