ruby-on-rails - 如何使用 xhr 在 rspec 中发布带有“params”键的 JSON?
问题描述
我在使用 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
键传递字符串。知道怎么做吗?
解决方案
尝试 rails-5 风格:
xhr :post, :create, params: { locale: :en, ... params: 'some,key' }
推荐阅读
- java - 用 Eclipse 调试 Activiti 进程
- python - 上下文变量无法解析为特征文件中的变量
- javascript - MongoDB:以降序方式对文档进行排序和显示
- android - 如何在 CameraX analyze() 之外提取调用 MLKit process() 的方法?
- mysql - mysql 按时间分组:如何在结果中选择第一个里程碑作为日期时间?
- c++ - 可以在第一个数据对象的方法中访问另一个第二个数据对象的私有属性吗?
- css - 具有两行的可滚动网格
- python - 如何在 Python 中保持 NUT2 UPS 服务器连接处于活动状态?
- c++ - 计算文件 C++ 中有多少个数据组
- python - 食人族和传教士问题python-人工智能算法