Как смешать вложенные ресурсы с несколькими значениями записей при тестировании контроллеров Rails? - PullRequest
1 голос
/ 12 января 2010

У меня есть модель под названием «Post», которая является вложенным ресурсом под моделью «Project», и я пытаюсь протестировать контроллер. Код работает найти в моем браузере, но я не могу заставить его работать в тесте. Вот тест

context "on POST to :edit" do
  setup do
    post( :edit,
      :project_id => @project1.to_param, 
      :id => @post1.to_param, 
      :post => { :title => 'new title', :text => 'other text' } 
    )
  end
  should_assign_to :post
  should_assign_to :project
  should_respond_with :success

  should "update post values" do
    assert_equal 'other text', assigns['post'].text
  end

Есть идеи, как я облажался?

1 Ответ

0 голосов
/ 12 января 2010

Это было результатом того, что я не понимал REST-архитектуру Rails или пост-синтаксис. Я должен был использовать PUT вместо POST, и вызов должен был выглядеть так:

context "on PUT to :update" do
  setup do
    put :update, { 
      :project_id => @project1.to_param, 
      :id => @post1.to_param, 
      :post => { :title => 'new title', :text => 'other text' } 
    } 
  end

  should_assign_to :post
  should_assign_to :project
  should_respond_with :success

  should "update post values" do
    assert_equal 'new title', assigns['post'].title
    assert_equal 'other text', assigns['post'].text
  end
end

Я использовал неправильный синтаксис, потому что по какой-то причине он все еще правильно обрабатывал мои вложенные идентификаторы.

...