2010-03-08 2 views
0

У меня есть контроллер под названием SolutionsController, действие индекса которого отличается в зависимости от значения params[:user_id]. Если его nil, то он просто отображает все решения на моем сайте, но если он не равен нулю, тогда он отображает все решения для данного идентификатора пользователя.Тестирование области поиска в контроллере Rails с RSpec

Здесь:

def index 
    if(params[:user_id]) 
     @solutions = @user.solutions.find(:all) 
    else 
     @solutions = Solution.find(:all) 
    end 
    end 

и @user определяется следующим образом:

private 

def load_user 
    if(params[:user_id ]) 
    @user = User.find(params[:user_id]) 
    end 
end 

У меня есть тест RSpec, чтобы проверить действие индекса, если пользователь равен нулю:

describe "GET index" do 
    context "when user_id is nil" do 
    it "should find all of the solutions" do 
     Solution.should_receive(:find).with(:all).and_return(@solutions) 
     get :index 
    end 
    end 
end 

Однако, может кто-то сказать мне, как я пишу аналогичный тест для другой половины моего контроллера, когда t он идентификатор пользователя не ноль?

Что-то вроде:

describe "GET index" do 
    context "when user_id isn't nil" do 

    before(:each) do 
    @user = Factory.create(:user) 
    @solutions = 7.times{Factory.build(:solution, :user => @user)} 
    @user.stub!(:solutions).and_return(@solutions) 
    end 

    it "should find all of the solutions owned by a user" do 
     @user.should_receive(:solutions).and_return(@solutions) 
     get :index, :user_id => @user.id 
    end 
    end 
end 

Но это не работает. Кто-нибудь может мне помочь?

ответ

0

попробовать и гасит находку на пользователе для того, когда user_id не ноль

describe "GET index" do 
    context "when user_id isn't nil" do 

    before(:each) do 
    @user = Factory.create(:user) 
    @solutions = 7.times{Factory.build(:solution, :user => @user)} 
    @user.stub!(:solutions).and_return(@solutions) 
    User.stub(:find).and_return(@user) 
    end 

    it "should find all of the solutions owned by a user" do 
     @user.should_receive(:solutions).and_return(@solutions) 
     get :index, :user_id => @user.id 
    end 
    end 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^