如何从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中与实际对象比较
将解析后的响应哈希和预期数据做对比,确保结构与值一致:
准备预期的哈希数据:
# 直接定义预期结构 expected_data = { "abc" => "abc", "xyz" => "xyz" } # 或者从模型实例转换(针对数据库对象) # expected_data = your_model_instance.as_json(only: [:abc, :xyz])编写RSpec断言:
expect(parsed_response).to eq(expected_data)
额外提示
如果只需验证部分字段,可使用include匹配器:
expect(parsed_response).to include("abc" => "abc")
内容的提问来源于stack exchange,提问作者Kumar Nikhil
相关产品推荐
相关产品推荐

