class Minitest::Mock
def expect name, retval, args = [], **kwargs, &blk
def expect name, retval, args = [], **kwargs, &blk name = name.to_sym if blk then raise ArgumentError, "args ignored when block given" unless args.empty? raise ArgumentError, "kwargs ignored when block given" unless kwargs.empty? @expected_calls[name] << { :retval => retval, :block => blk } else raise ArgumentError, "args must be an array" unless Array === args if ENV["MT_KWARGS_HAC\K"] && (Hash === args.last || Hash == args.last) then if kwargs.empty? then kwargs = args.pop else unless @@KW_WARNED then from = caller(1..1).first warn "Using MT_KWARGS_HAC\K yet passing kwargs. From #{from}" @@KW_WARNED = true end end end @expected_calls[name] << { :retval => retval, :args => args, :kwargs => kwargs } end self end