rspecのview specで画面レンダリング時には起きないNo route matches

| トラックバック(0)

どうも。

献身的という言葉がありますね。
ハシモトです。

本日のはまったポイントのお時間です。

<%= form_for @inquiry, url: { action: :confirm } do | f | %>
....(略)....
<% end %>

こんなformを用意したわけですね。でviewのspecを書いたワケですよ。

require 'spec_helper'
describe "Inquiries/index" do
  before(:each) do
    assign(:inquiry, stub_model(Inquiry).as_new_record)
  end
  it "should be rendered" do
    render
  end
end

No route matches {:action=>"confirm", :controller=>"Inquiries"}

動かない....

ブラウザでは動いてるんです。言い訳ではなく。

んでdebugger様と二時間ほど格闘ですよ。

で分かったのは以下

actionpack-4.0.4/lib/action_view/routing_url_for.rb
   91      def url_options #:nodoc:
   92        return super unless controller.respond_to?(:url_options)
   93        controller.url_options
   94      end

ここが、ブラウザからだと

{:host=>"localhost", :port=>3000, :protocol=>"http://", :_recall=>{:action=>"index", :controller=>"inquiries"}, :script_name=>""}

こうね。

でrspecからだと

{:host=>"localhost", :port=>3000, :protocol=>"http://", :_recall=>{:action=>"index", :controller=>"Inquiries"}, :script_name=>""}

controllerのキーが違う!

そもそもview specからどうやってcontrollerを判断してるんだ?って思ったら、ここですよ

describe "Inquiries/index" do

まさか、ですよね。

rails g で自動生成させると頭文字大文字っすよ?!
こんなんで良いの?

describe "inquiries/index" do

とりあえずこれでテストは通った。

寝る。

ではでは。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: rspecのview specで画面レンダリング時には起きないNo route matches

このブログ記事に対するトラックバックURL: http://blog.chrhsmt.com/mt-tb.cgi/527