2013-06-04 12 views
5

Sto tentando di creare un test del controller RSpec per un controller con spazio dei nomi, ma rspec non sembra in grado di rilevare l'annidamento e generare il percorso corretto per l'azione post :create.RSpec Test del controller che non genera l'url corretto

Questo è il mio codice 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 

Per questo codice, il get :index funziona bene, ma quando post :create si chiama, viene generato il seguente errore: undefined method 'crm_report_adjustment_url'

Perché RSpec essere abbastanza intelligente per capire le cose con get :index, ma non con post :create? Come faccio a ottenere RSpec per caricare correttamente il percorso giusto, che è admin_crm_report_adjustments_url?

Grazie in anticipo.

+1

sia ': GET' e': posto d'dovrebbe essere gestito lo stesso. dare un'occhiata a 'process' che gestisce la richiesta: http://apidock.com/rails/v3.2.13/ActionController/TestCase/Behavior/process si potrebbe provare a eseguire il debug dell'applicazione utilizzando la leva, debugger o puts – phoet

+0

Sto avendo lo stesso problema, hai trovato la soluzione @roflmao? – dwhite

risposta

1

prova a pubblicare l'URL invece:

post admin_crm_report_adjustments_url 

# or 

post "/admin/crm/report_adjustments" 
Problemi correlati