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.
Methods
public instance
Classes and Modules
Class Spec::Mocks::ArgumentMatchers::AnyArgMatcherClass Spec::Mocks::ArgumentMatchers::AnyArgsMatcher
Class Spec::Mocks::ArgumentMatchers::BooleanMatcher
Class Spec::Mocks::ArgumentMatchers::DuckTypeMatcher
Class Spec::Mocks::ArgumentMatchers::EqualityProxy
Class Spec::Mocks::ArgumentMatchers::HashIncludingMatcher
Class Spec::Mocks::ArgumentMatchers::HashNotIncludingMatcher
Class Spec::Mocks::ArgumentMatchers::InstanceOf
Class Spec::Mocks::ArgumentMatchers::KindOf
Class Spec::Mocks::ArgumentMatchers::MatcherMatcher
Class Spec::Mocks::ArgumentMatchers::NoArgsMatcher
Class Spec::Mocks::ArgumentMatchers::RegexpMatcher
Public instance methods
Passes if object receives :message with any args at all. This is really a more explicit variation of object.should_receive(:message)
# File lib/spec/mocks/argument_matchers.rb, line 146 def any_args AnyArgsMatcher.new end
Passes as long as there is an argument.
# File lib/spec/mocks/argument_matchers.rb, line 154 def anything AnyArgMatcher.new(nil) end
Passes if the argument is boolean.
# File lib/spec/mocks/argument_matchers.rb, line 186 def boolean BooleanMatcher.new(nil) end
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
# File lib/spec/mocks/argument_matchers.rb, line 178 def duck_type(*args) DuckTypeMatcher.new(*args) end
: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.
# 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))
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
# File lib/spec/mocks/argument_matchers.rb, line 206 def hash_not_including(*args) HashNotIncludingMatcher.new(anythingize_lonely_keys(*args)) end
Passes if arg.instance_of?(klass)
# File lib/spec/mocks/argument_matchers.rb, line 211 def instance_of(klass) InstanceOf.new(klass) end
Passes if arg.kind_of?(klass)
# File lib/spec/mocks/argument_matchers.rb, line 218 def kind_of(klass) KindOf.new(klass) end
Passes if no arguments are passed along with the message
# File lib/spec/mocks/argument_matchers.rb, line 162 def no_args NoArgsMatcher.new end