Module: Spec::Mocks::ArgumentMatchers

Included in:
ExampleMethods
Defined in:
lib/spec/mocks/argument_matchers.rb

Overview

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.

Defined Under Namespace

Classes: AnyArgMatcher, AnyArgsMatcher, BooleanMatcher, DuckTypeMatcher, EqualityProxy, HashIncludingMatcher, HashNotIncludingMatcher, InstanceOf, KindOf, MatcherMatcher, NoArgsMatcher, RegexpMatcher

Instance Method Summary collapse

Instance Method Details

#any_argsObject

:call-seq:

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)



158
159
160
# File 'lib/spec/mocks/argument_matchers.rb', line 158

def any_args
  AnyArgsMatcher.new
end

#anythingObject

:call-seq:

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

Passes as long as there is an argument.



166
167
168
# File 'lib/spec/mocks/argument_matchers.rb', line 166

def anything
  AnyArgMatcher.new(nil)
end

#booleanObject

:call-seq:

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

Passes if the argument is boolean.



190
191
192
# File 'lib/spec/mocks/argument_matchers.rb', line 190

def boolean
  BooleanMatcher.new(nil)
end

#duck_type(*args) ⇒ Object

:call-seq:

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


182
183
184
# File 'lib/spec/mocks/argument_matchers.rb', line 182

def duck_type(*args)
  DuckTypeMatcher.new(*args)
end

#hash_including(*args) ⇒ Object

: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.



200
201
202
# File 'lib/spec/mocks/argument_matchers.rb', line 200

def hash_including(*args)
  HashIncludingMatcher.new(anythingize_lonely_keys(*args))
end

#hash_not_including(*args) ⇒ Object

:call-seq:

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



210
211
212
# File 'lib/spec/mocks/argument_matchers.rb', line 210

def hash_not_including(*args)
  HashNotIncludingMatcher.new(anythingize_lonely_keys(*args))
end

#instance_of(klass) ⇒ Object Also known as: an_instance_of

Passes if arg.instance_of?(klass)



215
216
217
# File 'lib/spec/mocks/argument_matchers.rb', line 215

def instance_of(klass)
  InstanceOf.new(klass)
end

#kind_of(klass) ⇒ Object Also known as: a_kind_of

Passes if arg.kind_of?(klass)



222
223
224
# File 'lib/spec/mocks/argument_matchers.rb', line 222

def kind_of(klass)
  KindOf.new(klass)
end

#no_argsObject

:call-seq:

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

Passes if no arguments are passed along with the message



149
150
151
# File 'lib/spec/mocks/argument_matchers.rb', line 149

def no_args
  NoArgsMatcher.new
end