首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5.2.3在使用rspec进行测试时将所有params数据类型转换为字符串

Rails 5.2.3在使用rspec进行测试时将所有params数据类型转换为字符串
EN

Stack Overflow用户
提问于 2019-05-16 05:45:32
回答 2查看 1.1K关注 0票数 2

当我向rails发送请求时,我使用rails 5.2.3和rails (3.8.2)进行测试

代码语言:javascript
复制
  let(:params) do
    {
      down_payment: 10_000,
      asking_price: 100_000,
      payment_schedule: 'weekly',
      amortization_period: 5
    }
  end
  it 'works' do
    get :calculate, params: params, format: :json
    expect(response.status).to eq 200
  end

我也试过

代码语言:javascript
复制
  it 'works' do
    get :calculate, params: params, as: :json
    expect(response.status).to eq 200
  end

在rails中,所有整数都转换成字符串,如下所示

代码语言:javascript
复制
<ActionController::Parameters {"amortization_period"=>"5", "asking_price"=>"100000", "down_payment"=>"10000", "payment_schedule"=>"weekly", "format"=>"json", "controller"=>"payment_amount", "action"=>"calculate", "payment_amount"=>{}} permitted: false>

但是,如果我使用curl发送请求,我可以看到整数没有被转换为字符串。

代码语言:javascript
复制
curl -X GET -H "Content-Type: application/json"  -d ‘{"asking_price": 100000 ,"payment_schedule": "monthly", "down_payment": 10000, "amortization_period": 5  }' http://localhost:3000/payment-amount

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2019-05-16 09:23:02

JSON有效载荷可以包含五值类型stringnumberintegerbooleannull

相比之下,HTTP查询字符串仅为字符串

默认情况下,请求规范使用HTTP规范中指定的编码-即所有参数都是字符串。这就是你看到参数被转换的原因。

如果您的生产系统正在发送JSON,则需要告诉测试也要这样做--例如,像上面那样添加as: :json

票数 4
EN

Stack Overflow用户

发布于 2022-08-18 15:01:23

只需向请求中添加as: :json格式即可

代码语言:javascript
复制
post(graphql_path, params: params, as: :json)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56161554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档