2010-01-12 4 views
1

У меня есть модель под названием «Почта», которая представляет собой вложенный ресурс под моделью под названием «Проект», и я пытаюсь проверить контроллер. Поиск кода работает в моем браузере, но я не могу заставить его работать в тесте. Вот тестКак объединить вложенные ресурсы с несколькими значениями post при тестировании контроллеров Rails?

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 

Любая идея, как я это прикручиваю?

ответ

0

Это было результатом того, что я не понимал архитектуру 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 

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