summaryrefslogtreecommitdiff
path: root/spec/ruby/library/openstruct/method_missing_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/openstruct/method_missing_spec.rb')
-rw-r--r--spec/ruby/library/openstruct/method_missing_spec.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/spec/ruby/library/openstruct/method_missing_spec.rb b/spec/ruby/library/openstruct/method_missing_spec.rb
new file mode 100644
index 0000000000..89f83d07b3
--- /dev/null
+++ b/spec/ruby/library/openstruct/method_missing_spec.rb
@@ -0,0 +1,24 @@
+require_relative '../../spec_helper'
+require "ostruct"
+
+describe "OpenStruct#method_missing when called with a method name ending in '='" do
+ before :each do
+ @os = OpenStruct.new
+ end
+
+ it "raises an ArgumentError when not passed any additional arguments" do
+ -> { @os.send(:test=) }.should raise_error(ArgumentError)
+ end
+end
+
+describe "OpenStruct#method_missing when passed additional arguments" do
+ it "raises a NoMethodError when the key does not exist" do
+ os = OpenStruct.new
+ -> { os.test(1, 2, 3) }.should raise_error(NoMethodError)
+ end
+
+ it "raises an ArgumentError when the key exists" do
+ os = OpenStruct.new(test: 20)
+ -> { os.test(1, 2, 3) }.should raise_error(ArgumentError)
+ end
+end