使用Ruby+RSpec调用regres.in接口无法解析JSON的问题求助
问题原因
你配置的API域名拼写错误,公开测试接口的正确域名为reqres.in,你代码中写的regres.in是无效域名,指向了广告托管页,返回内容为HTML而非预期的JSON结构,因此触发JSON解析报错,无法正常读取返回字段。
修正后的完整代码
module User include HTTParty # 修正域名拼写 base_uri 'https://reqres.in' format :json end describe 'grouping GET verb methods' do it 'List all users' do # 查询参数通过query参数传递,避免手动拼接URL错误 @users = User.get('/api/users', query: { page: 2 }) expect(@users.code).to eq(200) # 输出解析后的响应内容 p @users.parsed_response puts @users.code end it 'List one user' do @user = User.get('/api/users/2') expect(@user.code).to eq(200) expect(@user['data']['id']).to eq(2) expect(@user['data']['first_name']).to eq("Janet") end end
额外代码调整说明
- 删除了
puts expect的混用写法,expect是断言方法,不需要额外包裹输出语句 - 移除了冗余的
print语句,避免重复输出内容 - GET请求的查询参数建议通过HTTParty内置的
query参数传递,可读性更高且不容易出现拼接错误 - 可以直接调用
parsed_response方法获取已经解析完成的Ruby哈希结构,不需要手动处理JSON解析逻辑
内容的提问来源于stack exchange,提问作者Tadeu
相关产品推荐
相关产品推荐

