Ruby on rails 如何使用“发布JSON”;“参数”;使用xhr输入rspec?
我在使用xhr测试控制器时遇到了一个问题Ruby on rails 如何使用“发布JSON”;“参数”;使用xhr输入rspec?,ruby-on-rails,rspec,xmlhttprequest,Ruby On Rails,Rspec,Xmlhttprequest,我在使用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/ac
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>'
和options[:params]
==“some,key”,这是一个字符串。当我从请求中删除params
时,它会通过。同样,当我将params
值更改为Hash
时
但是我确实需要使用params
键传递字符串。知道怎么做吗?试试rails-5风格:
xhr :post, :create, params: { locale: :en, ... params: 'some,key' }
尝试rails-5样式:
xhr :post, :create, params: { locale: :en, ... params: 'some,key' }
第二个选项是使用
params
字符串类型的键,而不是Symbol第二个选项是使用params
字符串类型的键,而不是Symbol
如何将参数作为散列传递?如何将参数作为散列传递?Thx,有效!但是locale
和customer\u id
必须在params
块之外。Thx,可以工作!但是locale
和customer\u id
必须位于params
块之外。