Как опубликовать JSON с ключом "params" в rspec, используя xhr? - PullRequest
0 голосов
/ 19 марта 2019

Я столкнулся с проблемой при тестировании контроллера с использованием xhr.

 it 'send request' do
    do_login :superguru

    xhr :post, :create,
        locale: :en,
        customer_id: customer.id,
        ...
        params: 'some,key'
  end

Трассировка стека:

 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_dispatch/routing/route_set.rb:802:in merge!'
 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_dispatch/routing/route_set.rb:802:in url_for'
 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_dispatch/routing/route_set.rb:773:in `path_for'
 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_controller/test_case.rb:745:in `build_request_uri'
 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_controller/test_case.rb:634:in `process'
 # ./spec/spec_helper.rb:41:in `process_with_default_locale'
 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_controller/test_case.rb:67:in `process'
 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_controller/test_case.rb:520:in `post'
 # /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_controller/test_case.rb:550:in `xml_http_request'
 # ./spec/controllers/api/meta/customers/data_series_import_configurations_controller_spec.rb:40:in `block (3 levels) in <module:Customers>'

Проблема в /Users/admin/.rvm/gems/ruby-2.4.4@energo/gems/actionpack-4.2.11/lib/action_dispatch/routing/route_set.rb:802, поскольку существует

if options.key? :params
   params.merge! options[:params]
end

И options[:params] == 'some, key', который является строкой.Когда я удаляю params из запроса, он проходит.То же самое, когда я изменяю значение params на Hash.

Но мне действительно нужно передать строку с ключом params.Есть идеи как это сделать?

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

Попробуйте стиль rails-5:

xhr :post, :create, params: { locale: :en, ... params: 'some,key' }
0 голосов
/ 22 марта 2019

Второй вариант - использовать params ключ типа String, а не Symbol

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