...

/

More Expectation Annotations

More Expectation Annotations

Let's learn about stub methods, testing with mock objects, and mock object arguments.

We'll cover the following...

RSpec allows several different annotations to the expectation part of declaring a test double. We can specify more complex return values or a variety of arguments to the stubbed method.

Stubbing return values

A couple of advanced usages of returns may be valuable now and again. If we have multiple return values specified, the stubbed method returns one at a time (spec added on line 21):

Bud1�lsdsclboolmodelsdsclbool @� @� @� @E�DSDB `� @� @� @
Adding multiple stubs spec in task_spec.rb file

The return values of the stubbed method walk through the values passed to and_return. Note that the values don’t cycle. The last value is repeated over and over again.

Stubbed method

RSpec can do a couple of other useful things with return values. If the method being stubbed takes a block and we want to cause the stubbed method to yield a particular set of arguments to the block, we can do so with and_yield:

`allow(project).to receive(:method).and_yield("arg")`

The expectation is that some method takes a block argument, and we want to pass through ...