Suggested shorthand for and_return when stubbing

I keep wanting to do this, and I don’t think it’s possible so I
thought I’d suggest it. Similarly to the way I can specify stub values
as hash key/value pairs when constructing a test double, I’d like to
be able to the same when subsequently calling stub on that double:

 me.stub(:name => 'Matt')

That’s as opposed to

 me.stub(:name).and_return('Matt')

Thoughts?

cheers,
Matt

+447974 430184

On Sat, Feb 20, 2010 at 4:09 PM, Matt W. [email protected] wrote:

Thoughts?

Have you tried it? It already works. You can do this, in fact:

me.stub(:name => ‘David’, :predictor_of_matts_future_requests => true)

Also, try this one:

me.stub(:name) { ‘Matt’ }

That’s actually my preference, because it gives you access to args:

me.stub(:sum) {|a,b| a + b}
me.sum(3,4)
=> 7

HTH,
David

me.stub(:sum) {|a,b| a + b} = really slick trick!

On 20 Feb 2010, at 23:22, David C. wrote:

me.stub(:name => ‘Matt’)
true)

Also, try this one:

me.stub(:name) { ‘Matt’ }

That’s actually my preference, because it gives you access to args:

me.stub(:sum) {|a,b| a + b}
me.sum(3,4)
=> 7

Ha ha. I should have known :slight_smile:

HTH,
David


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

+447974 430184

On Sat, Feb 20, 2010 at 5:27 PM, Frank L. [email protected]
wrote:

me.stub(:sum) {|a,b| a + b} = really slick trick!

It’s an easy way to do a Fake
(Fake Object at XUnitPatterns.com), at the method level
(all of those patterns are really method level patters, not object
level patterns).

Another use is for expectations:

foo.should_receive(:bar) do |a, b|
a.should be_x
b.should be_y
end