2013-06-04 18 views
5

Ich versuche einen RSpec-Controller-Test für einen Namespace-Controller zu erstellen, aber rspec scheint nicht in der Lage zu sein, die Verschachtelung zu erkennen und den richtigen Pfad für die Aktion post :create zu generieren.RSpec-Controller Test erzeugt keine richtige URL

Das ist mein spec Code:

# 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 

Für diesen Code, der get :index funktioniert gut, aber wenn post :create aufgerufen wird, wird der folgende Fehler generiert: undefined method 'crm_report_adjustment_url'

Warum RSpec intelligent genug sein würde Dinge mit get :index herauszufinden, aber nicht mit post :create? Wie bekomme ich RSpec, um die richtige Route richtig zu laden, die admin_crm_report_adjustments_url ist?

Vielen Dank im Voraus.

+1

beide ': get' und': Post' sollten gleich behandelt werden. Sehen Sie sich 'process' an, das die Anfrage stuff behandelt: http://apidock.com/rails/v3.2.13/ActionController/TestCase/Behavior/process Sie könnten versuchen, es in Ihrer Anwendung zu debuggen, indem Sie py, debugger oder puts verwenden – phoet

+0

Ich habe das gleiche Problem, hast du die Lösung @roflmao gefunden? – dwhite

Antwort

1

Versuchen Posting auf die URL statt:

post admin_crm_report_adjustments_url 

# or 

post "/admin/crm/report_adjustments"