2009-06-05 2 views
0

Кажется, мой маршрут rspec для: controller => 'phones',: action => 'edit' работает ... это должно быть «телефоны/123/edit» и IS в соответствии с rspec-тестами и рейк-маршрутами. Но когда я создаю ожидание redirect_to, ожидание терпит неудачу.Rspec redirect_to маршруты терпят неудачу (или неверно?), Как получилось?

Вот тест маршруты для URL:

it "maps #edit" do 
     route_for(:controller => "phones", :action => "edit", :id => "1").should == "/phones/1/edit" 
    end #THIS TEST PASSES 

Вот ожидание того, что не удается:

put :update, :id => "1", :phone => {} 
    response.should redirect_to :controller => 'phones', :action => 'edit' 

И это сообщение я получаю в тестах:

expected redirect to {:controller=>"phones", :action=>"edit"}, 
got redirect to "http://test.host/phones/1089/edit" # BUT THIS THE URL I WAS EXPECTING! 

Что за шизницы?

ответ

2

Причина, по которой это ошибка, заключается в том, что в ожидании отсутствует идентификатор. Оно должно быть:

response.should redirect_to :controller => 'phones', :action => 'edit', :id=>1 
+0

Достаточно близко ... Я artually закончил тем, что использовать mock_phone.id вроде этого: response.should redirect_to: контроллер => '', телефоны: действие => 'Правка' ,: id => wock_phone.id Спасибо, Пелл! Кстати, я где-нибудь видел тебя? У меня такое чувство, что я видел вас на Github или других форумах. – btelles

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