Rspec и Rails с тестами представления и вложенными ресурсами

Я работаю над приложением типа Yahoo Answers, чтобы улучшить свои навыки работы с Rails. До сих пор я установил две модели «Вопрос» и «Ответы», и они вложены таким образом:

  resources :questions do
    resources :answers
  end

Я сделал тесты для контроллеров, моделей и представлений вопросов, но у меня возникли небольшие проблемы с представлением ответов и вложенными маршрутами. Я использую Rspec и Factory girl.

У меня есть следующий тест:

describe "answers/new.html.erb" do
  before(:each) do
    @question = Factory(:valid_question)
    @answer = Factory(:valid_answer)
    assign(:question, @question)
    assign(:answer, stub_model(Answer,
      :text => "MyString",
      :question_id => 1
    ).as_new_record)
  end

  it "renders new answer form" do
    render
    assert_select "form", :action => question_answers_path(@question), :method => "post" do
      assert_select "textarea#answer_text", :name => "answer[text]"
      assert_select "input#answer_question_id", :name => "answer[question_id]"
    end
  end
end

и всякий раз, когда я запускаю тест, я получаю следующее сообщение:

  3) answers/new.html.erb renders new answer form
     Failure/Error: render
     ActionView::Template::Error:
       No route matches {:controller=>"answers"}
     #./app/views/answers/new.html.erb:6:in `_app_views_answers_new_html_erb__3175854877830910784_6513500'
     #./spec/views/answers/new.html.erb_spec.rb:16:in `block (2 levels) in <top (required)>'

Я пробовал много вещей, например

render new_question_answer_path(@question)

но я понимаю:

  3) answers/new.html.erb renders new answer form
     Failure/Error: render new_question_answer_path(@question.id)#, :format=>:html
     ActionView::MissingTemplate:
       Missing partial /questions/1/answers/new with {:handlers=>[:erb, :builder, :coffee], :formats=>[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :
url_encoded_form, :json], :locale=>[:en, :en]}. Searched in:
         * "/home/juan/rails_projects/answers/app/views"
     #./spec/views/answers/new.html.erb_spec.rb:16:in `block (2 levels) in <top (required)>'

Не могли бы вы помочь мне с этим? Я сейчас какой-то непонятливый.

5
задан Figarillo 8 July 2012 в 00:26
поделиться