Rails ActionController :: TestCase нет совпадений маршрута для нестандартного именованного вложенного ресурса - PullRequest
0 голосов
/ 12 января 2012

Я пытаюсь написать тестовые случаи для вложенного ресурса и вижу следующую ошибку:

Error:
    test_should_get_single_budget_link(BudgetlinkControllerTest):
    ActionController::RoutingError: No route matches {:budget_id=>980190962,    :action=>"show", :controller=>"budgetlink"}
    test/functional/budgetlink_controller_test.rb:5:in `test_should_get_single_budget_link'

Мой route.rb выглядит так:

Simplebudget::Application.routes.draw do

root :to => "home#index"

resources :budgets do
    resources :transactions
    resources :budgets, :controller => :budgetlink
end

resources :classifications
resources :periodicities

end

Мой тест выглядитнапример:

test "should get single budget link" do
    get :show, 'budget_id' => budgets(:one).id
    assert_response :success
    assert_equal assigns(:budgetlink).primary, "Budget1" 
    assert_equal assigns(:budgetlink).secondary, "Budget2" 
end

Я полагаю, это тот факт, что я настроил маршруты для использования имени ресурса "бюджеты" вместо бюджетных ссылок, и Rails не может в моем текущем тесте распознать бюджетный маршрут,Как я могу настроить свой тест для распознавания моего переназначенного маршрута?

Не уверен, если это необходимо, но решил, что это не повредит.Вот код контроллера:

class BudgetlinkController < ApplicationController
skip_before_filter :verify_authenticity_token 

def show
    @budgetlink = Budgetlink.find(params[:primary], params[:secondary])

    respond_to do |format|
        format.html   #index.html.erb
        format.json { render :json => @budgetlink}
    end
end
end

1 Ответ

1 голос
/ 15 января 2012

Я определил проблему. Я был на правильном пути, я не писал тест таким образом, чтобы он генерировал GET для правильного ресурса / маршрута.

test "should create budget link" do
     assert_difference('Budgetlink.count') do 
       post :create, :budget_id => budgets(:one).id,
                     :budgetlink => { :primary => budgets(:one).id,
                                      :secondary => budgets(:two).id}
    end      

    assert_redirected_to budget_path(assigns(:primarybudget))
    assert_equal 'Budget link created.', flash[:success]
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...