Rspec + Rails: POST URL-параметр для контроллера - PullRequest
4 голосов
/ 08 марта 2012

Я хочу, чтобы мои пользователи сделали

POST /controllername/v1
{
   "p2":"v2",
   "p3":"v3"
}

и договорились, чтобы POST достиг «имени контроллера» как

 params={ :p2 => "v2", :p3 => "v3" }
 p1=v1

Или, вообще-то, я могу работать с любым другим видомк контроллеру;Дело в том, что последнее слово в URL ("v1") должно быть доступно для контроллера для использования, аналогично p2 / v2 и p3 / v3.

И мне нужно проверить это сRpec.В частности:

rspec 2.6.4
rails 3.0.9
ruby 1.9.2

Я использую маршрут

match '/controllername/:p1' => 'controllername#create'

И это правило rspec работает:

it 'should route to :create' do
  assert_routing({ :path => '/controllername/foofoo',
                   :method => :post },
                 { :controller => "controllername",
                   :action => 'create',
                   :p1 => 'foofoo' })
end

Но я не могу понять, какпост к нему (из спецификации контроллера).Ни одна из этих работ:

post :create, parameters
post :create, parameters, 'foofoo'
post :create, parameters, :p1 => 'foofoo'
post :create, :p1 => 'foofoo', parameters

1 Ответ

1 голос
/ 21 декабря 2012

Для вашего примера:

Внутри controllername_controller_spec.rb

post :create, :p1 => "foo", :p2 => "bar", :p3 => "baz"

По сути, просто сложите все параметры, которые вы будете иметь в пути, и те параметры, которые вы хотите предоставить в теле запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...