Rspec-view-file не знает о моих маршрутах - PullRequest
3 голосов
/ 09 ноября 2011

Я новичок в 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 не знает о моей маршрутизации, но я не уверен. В любом случае, как я могу решить эту проблему?

1 Ответ

2 голосов
/ 09 ноября 2011

Тестирование вида rspec знает ваши маршруты, поэтому imho что-то еще не так. При просмотре вашего маршрута я вижу параметр :name.

Разве вы не должны как-то указывать :name? Кажется, он должен указывать на родительский пост, нет? Так что не совсем уверен, как это может работать.

Кажется, вы хотите сделать что-то вроде

= form_for [@post, @comment]

или создайте URL явно.

...