Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: 2-13-maintenan…

This branch is 4 commits ahead, 1333 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
Failed to load latest commit information.
README.md
any_instance.feature
as_null_object.feature
simple_return_value.feature
stub_chain.feature
stub_implementation.feature
to_ary.feature

README.md

Stub return values

# create a double
obj = double()

# specify a return value
obj.stub(:message) { :value }
obj.stub(:message => :value)
obj.stub(:message).and_return(:value)

These forms are somewhat interchangeable. The difference is that the block contents are evaluated lazily when the obj receives the message message, whereas the others are evaluated as they are read.

Fake implementation

obj.stub(:message) do |arg1, arg2|
  # set expectations about the args in this block
  # and/or set a return value
end

Raising/Throwing

obj.stub(:message).and_raise("this error")
obj.stub(:message).and_throw(:this_symbol)

You can also use the block format:

obj.stub(:message) { raise "this error" }
obj.stub(:message) { throw :this_symbol }

Argument constraints

Explicit arguments

obj.stub(:message).with('an argument') { ... }
obj.stub(:message).with('more_than', 'one_argument') { ... }

Argument matchers

obj.stub(:message).with(anything()) { ... }
obj.stub(:message).with(an_instance_of(Money)) { ... }
obj.stub(:message).with(hash_including(:a => 'b')) { ... }

Regular expressions

obj.stub(:message).with(/abc/) { ... }
Something went wrong with that request. Please try again.