2013-06-04 5 views
5

Próbuję utworzyć test kontrolera RSpec dla kontrolera z określonymi nazwami, ale rspec nie jest w stanie wykryć zagnieżdżenia i wygenerować poprawną ścieżkę dla akcji post :create.Test kontrolera RSpec nie generuje poprawnego adresu URL

To jest mój kod Spec:

# for: /app/controllers/admin/crm/report_adjustments_controller.rb 
require 'spec_helper' 
describe Admin::Crm::ReportAdjustmentsController do 
    render_views 

    before(:each) do 
    signin 
    end 

    describe "GET 'index'" do 
    it "returns http success" do 
     get :index 
     response.should be_success 
    end 
    end 

    describe "POST 'create'" do 
    it "creates with right parameters" do 
     expect { 
     post :create, report_adjustment: {distributor_id: @ole_distributor.id, amount: "30.0", date: Date.today } 
     }.to change(Crm::ReportAdjustment, :count).by(1) 
     response.should be_success 
    end 
    end 
end 

# routes.rb 
namespace :admin do 
    namespace :crm do 
    resources :report_adjustments 
    end 
end 

W tym kodzie get :index działa dobrze, ale gdy post :create nazywa się następujący błąd jest generowany: undefined method 'crm_report_adjustment_url'

Dlaczego RSpec być wystarczająco inteligentny wymyślić rzeczy z get :index, ale nie z post :create? Jak uzyskać RSPec, aby poprawnie załadować właściwą trasę, która jest admin_crm_report_adjustments_url?

Z góry dziękuję.

+1

zarówno ': GET' i': Post' powinny być traktowane tak samo. spójrz na 'process', który obsługuje żądania: http://apidock.com/rails/v3.2.13/ActionController/TestCase/Behavior/process Możesz spróbować debugować go w swojej aplikacji za pomocą podważenia, debuggera lub umieszcza – phoet

+0

Mam ten sam problem, czy znalazłeś rozwiązanie @roflmao? – dwhite

Odpowiedz

1

Spróbuj wpis do url zamiast:

post admin_crm_report_adjustments_url 

# or 

post "/admin/crm/report_adjustments"