2013-03-19 2 views
0

В моей конфигурации/routes.rb, я создал конкретный маршрут, нацеленный на контроллер данных:Функциональные тесты с конкретным маршрутом в рельсах

match '/things/:id/data' => 'data#get', :via => :get 

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

ActionController::RoutingError: No route matches {:controller=>"data", :action=>"get"} 

Мой тест:

require 'test_helper' 

class ActionController::TestCase 
    include Devise::TestHelpers 
end 

class DataControllerTest < ActionController::TestCase 
    setup do 
    sign_in users(:one) 
    end 

    test "should get last data of thing" do 
    get :get 
    assert_response :success 
    end 

end 

Как я могу указать в тесте, что/вещи /: необходимо идентификатор/данные, которые будут использоваться для сопоставления данных # get?

ответ

2

Попробуйте

test "should get last data of thing" do 
    get :get, id => "ID OF YOUR THING" 
    assert_response :success 
end 

data является member_action, так что вы должны предоставить идентификатор вашего ресурса (вещь в вашем случае)

+0

он пошел один шаг дальше с вашим подходом, но теперь у меня есть следующие error: Ожидаемый ответ будет <:success>, но был <406> – Luc

+0

Вы можете публиковать результаты 'rake routes | grep «data» ' – Naveed

+0

Проблема маршрутизации btw решена, ее спецификация, которая не получает ожидаемых результатов :) – Naveed

0

Удивительно, если вы изменили get на show, это работает? Если это так, я боюсь, что имена методов перезаписи для похожих имен глаголов - это беспорядок. Если это не так?

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