3
私はRSpecの中に新たなんだ
、View
ためにRSpecのテストを書き、私のルートについて知っていないとの問題があります:RSpecのビューファイルは
Failure/Error: render
ActionView::Template::Error:
No route matches {:controller=>"comments", :action=>"create", :format=>nil}
モデルの関係は単純です: テストがエラーで失敗します:
post has_many :comments
comment belongs_to :post
ビューファイル:
# app/views/posts/show.html.haml
#postform
= form_for @comment do |f|
= f.text_field :name
= f.submit "Reply"
RSpecのファイル:
# spec/views/posts/show.html.haml_spec.rb
require 'spec_helper'
describe 'posts/show.html.haml' do
it 'renders the form for a new comment creation' do
assign(:post, mock_model(Post).as_new_record.as_null_object)
assign(:comment, mock_model(Comment).as_new_record.as_null_object)
render
end
end
routes.rbを
post '/:name/comments' => 'comments#create', :as => :comments
アプリケーションは正常に動作します。
No route matches {:controller=>"comments", :action=>"create", :format=>nil}
は、だから私はそれが私のルーティングについて知らないRSpecのビューファイルのように見えると思うが、私は:私はroutes.rbをからその行を削除した場合でも、その後、開発モードで私は同じエラーを取得しますわからない。とにかく、どうすれば問題を解決できますか?
返信いただきありがとうございます!問題は ':name'パラメータとまったく同じでした。私は、 'rspec'ファイルに' controller.request.path_parameters [:name] = post.name'という行を追加して、 'post'模擬モデルにパラメータを割り当てました。 – evfwcqcg