0

次のルート ルールがあります。

get '/reports/stats_by_date', to: 'reports#stats_by_date'

そして、レーキルートは私にこれを与えます:

reports_stats_by_date GET    /reports/stats_by_date(.:format)         reports#stats_by_date

それは正しいようです。したがって、この関数を使用してレーキ内からコントローラーをテストしようとしています:

def test_reports_should_load    
  get :reports_stats_by_date, :start_date => '2013-10-01', :end_date => '2013-10-05', :format => :json
  assert_response :success
end

ものすごく単純。しかし、レーキ テストを実行すると、次のエラーが表示されます。

ReportsControllerTest#test_reports_should_load:
ActionController::UrlGenerationError: No route matches {:start_date=>"2013-10-01", :end_date=>"2013-10-05", :format=>:json, :controller=>"reports", :action=>"reports_stats_by_date"}
test/controllers/reports_controller_test.rb:6:in `test_reports_should_load'

何らかの理由で、Rails はアクション :reports_stats_by_date をロードしようとしていますが、ルートが明らかに reports#stats_by_date を指しています。ここで何が間違っていましたか?

4

1 に答える 1

1

パスの名前ではなく、アクション名のみを参照する必要があるためだと思います。reports_stats_by_date の代わりに stats_by_date

 def test_reports_should_load    
  get :stats_by_date, :start_date => '2013-10-01', :end_date => '2013-10-05', :format => :json
  assert_response :success
end
于 2013-10-04T20:43:37.937 に答える