diff --git a/spec/spectator/mocks/arguments_spec.cr b/spec/spectator/mocks/arguments_spec.cr index 28df101..9e8d58b 100644 --- a/spec/spectator/mocks/arguments_spec.cr +++ b/spec/spectator/mocks/arguments_spec.cr @@ -24,6 +24,26 @@ Spectator.describe Spectator::Arguments do end end + describe "#[]" do + context "with an index" do + it "returns a positional argument" do + aggregate_failures do + expect(arguments[0]).to eq(42) + expect(arguments[1]).to eq("foo") + end + end + end + + context "with a symbol" do + it "returns a named argument" do + aggregate_failures do + expect(arguments[:bar]).to eq("baz") + expect(arguments[:qux]).to eq(123) + end + end + end + end + describe "#to_s" do subject { arguments.to_s } diff --git a/src/spectator/mocks/arguments.cr b/src/spectator/mocks/arguments.cr index 9a1cd5c..dd53642 100644 --- a/src/spectator/mocks/arguments.cr +++ b/src/spectator/mocks/arguments.cr @@ -27,6 +27,16 @@ module Spectator {{@type.name(generic_args: false)}}.capture end + # Returns the positional argument at the specified index. + def [](index : Int) + @args[index] + end + + # Returns the specified named argument. + def [](arg : Symbol) + @kwargs[arg] + end + # Constructs a string representation of the arguments. def to_s(io : IO) : Nil return io << "(no args)" if args.empty? && kwargs.empty?