Module Spec::Mocks::ArgumentMatchers

  1. lib/spec/mocks/argument_matchers.rb

ArgumentMatchers are messages that you can include in message expectations to match arguments against a broader check than simple equality.

With the exception of any_args() and no_args(), the matchers are all positional - they match against the arg in the given position.

Public instance methods

a_kind_of (klass)

Alias for kind_of

an_instance_of (klass)

Alias for instance_of

object.should_receive(:message).with(any_args())

Passes if object receives :message with any args at all. This is really a more explicit variation of object.should_receive(:message)

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 146
      def any_args
        AnyArgsMatcher.new
      end
object.should_receive(:message).with(anything())

Passes as long as there is an argument.

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 154
      def anything
        AnyArgMatcher.new(nil)
      end
object.should_receive(:message).with(boolean())

Passes if the argument is boolean.

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 186
      def boolean
        BooleanMatcher.new(nil)
      end
object.should_receive(:message).with(duck_type(:hello))
object.should_receive(:message).with(duck_type(:hello, :goodbye))

Passes if the argument responds to the specified messages.

Examples

array = []
display = mock('display')
display.should_receive(:present_names).with(duck_type(:length, :each))
=> passes
[show source]
# File lib/spec/mocks/argument_matchers.rb, line 178
      def duck_type(*args)
        DuckTypeMatcher.new(*args)
      end
hash_including (*args)

:call-seq:

object.should_receive(:message).with(hash_including(:key => val))
object.should_receive(:message).with(hash_including(:key))
object.should_receive(:message).with(hash_including(:key, :key2 => val2))

Passes if the argument is a hash that includes the specified key(s) or key/value pairs. If the hash includes other keys, it will still pass.

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 196
      def hash_including(*args)
        HashIncludingMatcher.new(anythingize_lonely_keys(*args))
      end
object.should_receive(:message).with(hash_not_including(:key => val))
object.should_receive(:message).with(hash_not_including(:key))
object.should_receive(:message).with(hash_not_including(:key, :key2 => :val2))

Passes if the argument is a hash that doesn’t include the specified key(s) or key/value

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 206
      def hash_not_including(*args)
        HashNotIncludingMatcher.new(anythingize_lonely_keys(*args))
      end
instance_of (klass)

Passes if arg.instance_of?(klass)

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 211
      def instance_of(klass)
        InstanceOf.new(klass)
      end
kind_of (klass)

Passes if arg.kind_of?(klass)

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 218
      def kind_of(klass)
        KindOf.new(klass)
      end
object.should_receive(:message).with(no_args)

Passes if no arguments are passed along with the message

[show source]
# File lib/spec/mocks/argument_matchers.rb, line 162
      def no_args
        NoArgsMatcher.new
      end