アセット パイプラインをオンにして Rails 3.2 を使用しています。まだ作成していないアクションをテストしています (TDD; 最初にテストを失敗させようとしています)。最初にテストを実行すると、期待どおりに失敗します。
class AccountsControllerTest < ActionController::TestCase
def test_my_path
get :my_path
puts @response.body
assert_template :my_path
end
end
#=> test_my_path(AccountsControllerTest): AbstractController::ActionNotFound: The action 'my_path' could not be found for AccountsController
対応するビュー (app/views/my_path.html.erb) を追加すると、このアクションのルートを指定していないため、テストが失敗することが予想されます。それはパスしますが、ページがアセット パイプラインによってレンダリングされているためだと思います。私が呼び出すビューで、それは呼び出しから<%= request.fullpath %>
吐き出されます。/assets?action=my_path
puts @response.body
ブラウザーで accounts/my_path にアクセスしようとすると、「[GET] "/accounts/my_path" に一致するルートがありません」と表示されるので、失敗しているテストがあることを確認したいと思います。なぜこのようなことが起こるのでしょうか? また、テストをどのように修正すればよいでしょうか? 代わりに、assert_recognizes を使用してルートを個別にテストする必要がありますか? 問題の原因を絞り込むために、ルート ファイルは現在空です。