Spec testing controllers

I just started using rspec and mocha to test all of my controllers.
Before I was using factory girl to test do my testing, but all those
database hits really take a long time. However i’m finding i’m spending
way more time writing stubs and mocks to satisfy my controllers than I
am actually writing tests.

This is a two part general question

  1. Am i doing something completely wrong in my controllers? I’m testing
    with integrate_views and the number of times something.stubs(:each)
    comes up way to often in my specs. Most of my controllers involve at
    least 2 normally 3 models.

  2. Is there a way to auto generate stubs and mocks like factory-girl, so
    i don’t have to worry about populating every last property of every last
    mock_model’d ? I can just call Mock_Factory.create(:website) and set up
    a list of defaults somewhere else?

I feel like my stubs and mocks are supposed to help me, not confuse me:

http://pastie.org/641647

Your thoughts?

Thanks for the reply James! These certainly look promising and merit
digging into further. Looks like others have the same idea, but there is
no cohesive standard/incredibly-stable&proven way to do this.

2009/10/4 Richard S. [email protected]:

comes up way to often in my specs. Most of my controllers involve at
http://pastie.org/641647

Your thoughts?

Hi Richard,

I haven’t used it myself, but you might find this thread [1] of
interest. In particular, Murray S.'s fork [2] of factory_girl
sounds a bit like what you are looking for.

Alternatively, David C.'s Stubble [3] might offer an
alternative approach, although I think that currently requires a small
patch to Mocha.

Regards, James.

[1] http://rubyurl.com/23WA
[2] GitHub - h-lame/factory_bot: Fork of factory_bot from way back in 2008 to add after_build and after_create callbacks before the main gem had these features. Keeping this for posterity because the commit wasn't included directly in the main repo.
[3] GitHub - dchelimsky/stubble: Tools to make stubbing Ruby ORM models just a little bit easier

Richard S. wrote:

I just started using rspec and mocha to test all of my controllers.
Before I was using factory girl to test do my testing, but all those
database hits really take a long time.

Are you sure that’s where you’re losing time? (For the record, I’m
using and loving Machinist.)

However i’m finding i’m spending
way more time writing stubs and mocks to satisfy my controllers than I
am actually writing tests.

Then that’s a sign that something is wrong…perhaps those DB hits
aren’t so bad! :slight_smile:

This is a two part general question

  1. Am i doing something completely wrong in my controllers? I’m testing
    with integrate_views and the number of times something.stubs(:each)
    comes up way to often in my specs. Most of my controllers involve at
    least 2 normally 3 models.

  2. Is there a way to auto generate stubs and mocks like factory-girl, so
    i don’t have to worry about populating every last property of every last
    mock_model’d ? I can just call Mock_Factory.create(:website) and set up
    a list of defaults somewhere else?

The answer to both of these questions is: go back to using factories.
If you don’t like Factory Girl, try Machinist.

Also, you might want to think about writing fewer controller specs and
using Cucumber more…

I feel like my stubs and mocks are supposed to help me, not confuse me:

http://pastie.org/641647

Yeah, that lookls like the kind of stuff I used to write before
Machinist…

Your thoughts?

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]