You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Faraday::Response获取response_body并在Rails RSpec中对比

从Faraday响应提取response_body并在RSpec中验证

一、提取response_body

Faraday响应对象提供了直接获取响应体的方法,分两种场景处理:

  • 场景1:响应体为原始JSON字符串
    通过body方法拿到字符串后,用JSON.parse解析成Ruby哈希:

    # 获取原始JSON响应体
    raw_body = http_response.body
    # 解析为Ruby哈希
    parsed_response = JSON.parse(raw_body)
    
  • 场景2:已配置Faraday自动解析JSON
    如果你的Faraday客户端配置了FaradayMiddleware::ParseJson这类中间件,body方法会直接返回解析后的Ruby哈希,无需手动处理:

    parsed_response = http_response.body
    

二、在RSpec中与实际对象比较

将解析后的响应哈希和预期数据做对比,确保结构与值一致:

  1. 准备预期的哈希数据:

    # 直接定义预期结构
    expected_data = { "abc" => "abc", "xyz" => "xyz" }
    # 或者从模型实例转换(针对数据库对象)
    # expected_data = your_model_instance.as_json(only: [:abc, :xyz])
    
  2. 编写RSpec断言:

    expect(parsed_response).to eq(expected_data)
    

额外提示

如果只需验证部分字段,可使用include匹配器:

expect(parsed_response).to include("abc" => "abc")

内容的提问来源于stack exchange,提问作者Kumar Nikhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:55:33