Спецификация запроса RSpec не передает параметры для post-запроса

#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 в параметрах. Параметры должны просто передаваться как хэш в спецификации