2013-08-14 2 views
1

я решил попробовать использовать пни, потому что я слышал, что они будут делать мои тесты работают быстрее:погасили спецификация занимает больше времени, чтобы запустить

Они пошли от этого:

it "should create a new instance given a valid attribute" do 
    User.create!(@attr) 
end 

it "should require a name" do 
    no_name_user = User.new(@attr.merge(:name => "")) 
    no_name_user.should_not be_valid 
end 

it "should require an email address" do 
    no_email_user = User.new(@attr.merge(:email => "")) 
    no_email_user.should_not be_valid 
end 

Для этого:

it "should create a new instance given a valid attribute" do 
    user = FactoryGirl.build_stubbed(:user, @attr) 
    user.should be_valid 
end 

it "should require a name" do 
    no_name_user = FactoryGirl.build_stubbed(:user, @attr.merge(:name => "")) 
    no_name_user.should_not be_valid 
end 

it "should require an email address" do 
    no_email_user = FactoryGirl.build_stubbed(:user, @attr.merge(:email => "")) 
    no_email_user.should_not be_valid 
end 

Но возьмите 10 секунд больше времени на прогон. Весь мой пакет занимает всего 5 минут. Я ожидал ускорения скорости от этого.

+1

'build_stubbed' не может победить' новый', но определенно побеждает db hits – apneadiving

+1

У вас есть какие-либо ассоциации в вашей модели? См. Http://blog.spoolz.com/2012/07/09/small-revelation-factorygirl-build_stubbed-associations-and-let/ –

+0

Спасибо за ваш коллективный совет и ссылку. – stephenmurdoch

ответ

0

Это происходит потому, что я включаю видеомагнитофон, EmailSpec, DataBaseCleaner и множество других вещей в spec_helper.rb.

A tiered spec helper решает эту проблему.