Stub! and null_object


#1

I have some code I want to stub out as it’s not part of what I’m
testing.

It’s got a bit of DSL going on, so there are method calls chained
together.

The call I want to stub out looks like this:

 user.record_action(:uploaded_a_photo => concert).with_result(photo)

So ideally, I’d just do @user.stub!(:record_action) and that would
return a null object that didn’t care what we did to it.

However, possibly due to my own ignorance, I’m having to do something
a lot more ugly, like this:

 @user.stub!(:record_action).and_return(mock('blah',:null_object

=> true))

Can anyone beautify this a bit more?

cheers,
Matt


#2

On Mon, Nov 3, 2008 at 5:36 AM, Matt W. removed_email_address@domain.invalid wrote:

I have some code I want to stub out as it’s not part of what I’m testing.

It’s got a bit of DSL going on, so there are method calls chained together.

The call I want to stub out looks like this:

user.record_action(:uploaded_a_photo => concert).with_result(photo)

So ideally, I’d just do @user.stub!(:record_action) and that would return a
null object that didn’t care what we did to it.

stub! returns self (@user in this case), that’s how it’s able to chain
methods like and_return

However, possibly due to my own ignorance, I’m having to do something a lot
more ugly, like this:

@user.stub!(:record_action).and_return(mock(‘blah’,:null_object => true))

Can anyone beautify this a bit more?

Only slightly:

@user.stub!(:record_action).and_return(mock(‘blah’).as_null_object)