#ruby-on-rails #rspec #rspec-rails
#ruby-on-rails #rspec #rspec-rails
Вопрос:
Я не уверен, что здесь происходит, но я начал новый личный проект, и по какой-то причине при написании спецификаций запроса параметры для запросов post не поступают на контроллер. Вот моя спецификация:
let(:params) { {data: {type: 'user', attributes: {...}, relationships: {...} } } }
before do
login_as_user(user)
post "/api/v1/users", params: params.to_json, headers: headers
end
Тем не менее, когда я помещаю запрос в действие create контроллера, параметров нет. Есть формат, заголовки, контроллер и действие, но нет параметров из спецификации.
Я никогда раньше не сталкивался с этой проблемой и не уверен, что может быть причиной этого. Я не могу найти в Интернете ничего, что решало бы эту проблему, кроме как указать as: :json
спецификацию запроса. Я сделал это, но это не устранило проблему.
ОБНОВЛЕНИЕ: когда я удаляю заголовки из запроса, параметры передаются, как и ожидалось. Вот мои маршруты:
namespace :api, defaults: { format: :json }, header: { name: 'Content-Type', value: 'application/vnd.api json' }
Спасибо за любую помощь, которую кто-либо может предложить: D
Комментарии:
1. не должно быть
headers
вместоheader
в определении маршрута?, кроме того, что вы используете? рельсы? виноград?2. Использование rails. Либо заголовки, либо заголовок работают с точки зрения передачи заголовков. Но когда я использую здесь заголовок типа содержимого, он не будет передавать параметры через
3. Вы пробовали без установки этого?
4. Какую версию RSpec вы используете? Поскольку синтаксис изменился, и ваша спецификация (с вложенными ниже параметрами
params:
) представляет собой новый синтаксис, который был введен в RSpec 3.5, должен был использоваться в RSpec 4.5. Проблема с приведенным выше кодом заключается в .to_json в параметрах. Параметры должны просто передаваться как хэш в спецификации