# Stubbing objects in Radiant

**URL:** <https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744>\
**Category:** Radiant CMS\
**Created:** [July 18, 2007, 3:33pm UTC](https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744 "2007-07-18T15:33:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Barry\_Hess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3be4f8/32.png) [@Barry\_Hess](https://www.ruby-forum.com/u/Barry_Hess)\
**Post date:** [July 18, 2007, 3:33pm UTC](https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744/1 "2007-07-18T15:33:57Z")

</div>

Hi,

Currently I’m writing some tests for a front end shopping cart extension  
I  
wrote for a client. Of course, for the functional testing I’d like to  
stub  
out some models to verify proper methods are being called by my  
controller.  
Unfortunately this doesn’t appear to be “just working” under the  
extension  
model like it does in Rails.

In fact, it doesn’t appear that my stub objects in  
extension/test/mocks/test/ are even being loaded. I realize it may be  
that  
the load path in a Radiant environment does not even bother looking for  
stubs first.

Is anyone aware of a way to stub models in Radiant extension testing?  
Is  
anyone aware of the load path ordering in Radiant?

## Any help or insight is appreciated!

Barry Hess  
removed\_email\_address@domain.invalid

> **[Barry Hess :: bjhess.com](https://bjhess.com/)**
>
> Barry Hess writes about software, writing, creativity, media, and family.

---

<div class="post-metadata">

**Author:** ![Barry\_Hess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3be4f8/32.png) [@Barry\_Hess](https://www.ruby-forum.com/u/Barry_Hess)\
**Post date:** [July 18, 2007, 3:42pm UTC](https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744/2 "2007-07-18T15:42:07Z")

</div>

I don’t believe test/mocks/test is included in the load path, as we’ve  
never had anyone using mocks in extensions yet. In  
extension/test/test\_helper.rb, you should probably require them  
specifically, or in the individual tests. If there is a canonical way  
(i.e. the Rails way) that they are loaded, any info about that would be  
appreciated.

Honestly, I’ve fallen in love with RSpec lately and appreciate the power  
of mocks and stubs… good call.

Sean

---

<div class="post-metadata">

**Author:** ![Barry\_Hess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3be4f8/32.png) [@Barry\_Hess](https://www.ruby-forum.com/u/Barry_Hess)\
**Post date:** [July 18, 2007, 9:24pm UTC](https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744/3 "2007-07-18T21:24:42Z")

</div>

Thanks for the hints, Sean.

In extensions/shopping\_cart/test/test\_helper.rb I required the stub/mock  
model object:

require File.dirname( **FILE** ) + “/mocks/test/order\_mailer”

In extensions/shopping\_cart/test/mocks/test/order\_mailer.rb I required  
the  
original model object:

require File.dirname( **FILE** ) + ‘/…/…/…/app/models/order\_mailer’

I imagine there’s a way to require all stub files in the mocks/test  
directory. Unfortunately I’m not rockstar enough to know how off the  
top of  
my head.

(Andrew, I decided against Mocha simply because I haven’t used it  
before,  
nor has the contracting group I’m working with. I just didn’t want to  
add  
another moving piece. I definitely will look into it in the future,  
though.)

~Barry

On 7/18/07, Sean C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> controller.
> 
> > Is anyone aware of a way to stub models in Radiant extension  
> > Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)

–  
Barry Hess  
removed\_email\_address@domain.invalid

> **[Barry Hess :: bjhess.com](https://bjhess.com/)**
>
> Barry Hess writes about software, writing, creativity, media, and family.

---

<div class="post-metadata">

**Author:** ![Barry\_Hess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3be4f8/32.png) [@Barry\_Hess](https://www.ruby-forum.com/u/Barry_Hess)\
**Post date:** [July 18, 2007, 3:50pm UTC](https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744/4 "2007-07-18T15:50:08Z")

</div>

I’ve been using Mocha in my extensions for a little while now. All I do  
is  
require ‘rubygems’ (unnecessary I know, but it’s habit) and ‘mocha’.  
I guess RSpec is getting closer to stable, so maybe it’s time for a  
second  
look.

-Andrew

---

<div class="post-metadata">

**Author:** ![Barry\_Hess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3be4f8/32.png) [@Barry\_Hess](https://www.ruby-forum.com/u/Barry_Hess)\
**Post date:** [July 18, 2007, 9:28pm UTC](https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744/5 "2007-07-18T21:28:42Z")

</div>

Barry Hess wrote:

> Thanks for the hints, Sean.
> 
> In extensions/shopping\_cart/test/test\_helper.rb I required the stub/mock  
> model object:
> 
> require File.dirname( **FILE** ) + “/mocks/test/order\_mailer”

Dir-glob to the rescue! Try this:

Dir[File.dirname( **FILE** ) + "/mocks/test/\*.rb].each do |file|  
require file  
end

That will load all of your mocks in the test helper.

Sean

---

<div class="post-metadata">

**Author:** ![Barry\_Hess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3be4f8/32.png) [@Barry\_Hess](https://www.ruby-forum.com/u/Barry_Hess)\
**Post date:** [July 18, 2007, 9:37pm UTC](https://www.ruby-forum.com/t/stubbing-objects-in-radiant/109744/6 "2007-07-18T21:37:43Z")

</div>

Thanks, Sean.

Another note. If you have any unit tests relating to the model that’s  
been  
stubbed, you’ll need to explicitly require the real model. Something  
like:

require File.dirname( **FILE** ) + ‘/…/…/app/models/order\_mailer’

~Barry

On 7/18/07, Sean C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)

–  
Barry Hess  
removed\_email\_address@domain.invalid

> **[Barry Hess :: bjhess.com](https://bjhess.com/)**
>
> Barry Hess writes about software, writing, creativity, media, and family.
