Reputation: 2145
I know the following things work:
returning a parameter
subject.should_receive(:get_user_choice){ |choices| choices.to_a[0] }
and a sequence (it will return a 0 on the first call, and the second time "exit")
subject.should_receive(:get_user_choice).and_return(0, "exit")
But how to combine them? what if I would like to return the parameter the first time and then return "exit"
Upvotes: 4
Views: 922
Reputation: 20125
Alternatively:
subject.should_receive(:get_user_choice).ordered.and_return { |choices| choices.to_a[0] }
subject.should_receive(:get_user_choice).ordered.and_return { "exit" }
Upvotes: 5
Reputation: 6068
Not most elegant, but how about:
n = 0
subject.should_receive(:get_user_choice){|choices|
(n += 1) < 2 ? choices.to_a[0] : "exit"
}
Upvotes: 1