Я новичок в rspec, напишите rspec-test для View
, и возникла проблема:
тест не пройден с ошибкой:
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
Приложение работает нормально. Но если я уберу эту строку из rout.rb, то в режиме разработки получаю ту же ошибку:
No route matches {:controller=>"comments", :action=>"create", :format=>nil}
Так что я думаю, что rspec-view-file не знает о моей маршрутизации, но я не уверен. В любом случае, как я могу решить эту проблему?