2015-06-19 3 views
0

я написал двигатель:Rails 4.0 Двигатель и вложенным тестирование маршрутизации с Rspec 3

module MercatorMpay24 
    class Admin::PaymentsController < ::Admin::AdminSiteController 
    def check_confirmation 
     @payment = Payment.find(params[:id]) 
    end 
    end 
end 

и определили маршрут:

MercatorMpay24::Engine.routes.draw do 
    namespace :admin do 
    get 'payments/:id/check_confirmation' => 'payments#check_confirmation', 
     :as => 'check_confirmation' 
    end 
end 

работает отлично и может быть названо, реагирующий, .. .

Теперь я хочу модульного тестирования, что:

require 'spec_helper' 
describe MercatorMpay24::Admin::PaymentsController, :type => :controller do 
    describe "GET #check_confirmation" do 
    it "finds the payment" do 
     @payment = create(:payment) 
     get :check_confirmation, id: @payment.id 
     expect(assigns(:payment)).to eql @payment 
    end 
    end 
end 

, но это дает мне ошибку:

No route matches {:action=>"check_confirmation", 
:controller=>"mercator_mpay24/admin/payments", :id=>"1"} 

в то время как rake routes | grep check_confirmation дает мне:

admin_check_confirmation GET /admin/payments/:id/check_confirmation(.:format) 
mercator_mpay24/admin/payments#check_confirmation 

Я думаю, что я делаю что-то неправильно с пространствами имен, но я понятия не имею, то, что .. ..

ответ

0

мне не хватало:

routes { MercatorMpay24::Engine.routes } 

в спецификации контроллера.