[rspec-users] Attempting to speed up my controller specs: using before all fails?

Pat Maddox patmaddox at me.com
Wed Oct 12 17:38:27 EDT 2011


Yes it's by design, no you cannot circumvent it. What you can do is use mocks to avoid expensive DB hits, or have multiple expectations in a single example.

Pat

p.s. This is Ruby, so you absolutely *can* circumvent it. How to do that and whether it's worth the trouble is up to you to figure out.



On Oct 12, 2011, at 12:09 PM, nathanvda <nathanvda at gmail.com> wrote:

> Nobody?
> 
> On Oct 11, 1:05 pm, nathanvda <nathan... at gmail.com> wrote:
>> I have a simple controller test, containing a.o. the following code:
>> 
>>     context "POST :create" do
>>       before (:each) do
>>         post :create, :user_id => @user.id,
>>              :account => { .. some data ... }
>>       end
>>       it { response.status.should == 201 }
>>       it { response.location.should be_present }
>>     end
>> 
>> Now I thought of a very simple way to speed up this test, and to use a
>> `before(:all)` instead of a `before(:each)`. In that case the POST
>> would only be done once.
>> 
>> So i wrote:
>> 
>>     context "POST :create" do
>>       before (:all) do
>>         post :create, :user_id => @user.id,
>>              :account => { .. some data ... }
>>       end
>>       it { response.status.should == 201 }
>>       it { response.location.should be_present }
>>     end
>> 
>> But then I get the following errors:
>> 
>>      RuntimeError:
>>        @routes is nil: make sure you set it in your test's setup
>> method.
>> 
>> Is this by design? Is there a way to circumvent it?
>> _______________________________________________
>> rspec-users mailing list
>> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list