2015-06-19 108 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 } 
控制器规范