Я использую rails-api gem для создания веб-службы и хочу протестировать мой API с помощью RSpec. Каждый запрос, который я делаю, независимо от метода HTTP, имеет заголовок CONTENT_TYPE
, заданный как "application/x-www-form-urlencoded". Это не проблема, пока я не попытаюсь использовать wrap_parameters в моем контроллере, и это не влияет на хеш params:
class ApplicationController < ActionController::API
include ActionController::ParamsWrapper
end
class ProjectsController < ApplicationController
wrap_parameters :project, include: [:name]
# ...
end
Этот хак больше не работает (@request is nil), и ни один из других сообщений, которые я нашел, тоже работает.
Если я сделаю следующий запрос в моем тесте RSpec:
put "/projects/1.json", {name: 'Updated Project 1'}
и поставьте отладчик в мой контроллер, я получаю:
(rdb:1) p params
{ "name"=>"Updated Project 1",
"action"=>"update",
"controller"=>"projects",
"id"=>"5539bbd9-010c-4cfb-88d3-82dadbc99507",
"format"=>"json"
}
(rdb:1) p request.content_type
"application/x-www-form-urlencoded"
Я ожидаю увидеть что-то подобное для хэша params (обратите внимание на добавление ключа проекта):
{ "name"=>"Updated Project 1",
"action"=>"update",
"controller"=>"projects",
"id"=>"5539bbd9-010c-4cfb-88d3-82dadbc99507",
"format"=>"json",
"project" => {"name" => "Updated Project 1"}
}
Можно ли установить заголовок типа контента, используя только RSpec? Или мне нужно использовать стойку/тест для этой функции?