我是全新的ruby(第一天使用ruby),所以请原谅任何新手问题和缺乏理解.
我试图验证对http呼叫的响应.
例如,假设端点如下:
https://applicationname-api-sBox02.herokuapp.com
get_response = RestClient.get( "https://applicationname-api-sBox02.herokuapp.com/api/v1/users",{ "Content-Type" => "application/json","Authorization" => "token 4d012314b7e46008f215cdb7d120cdd7","Manufacturer-Token" => "8d0693ccfe65104600e2555d5af34213" } )
现在,我想验证响应并执行以下操作:
– 解析响应,确保它是有效的JSON
– 做一些验证并验证JSON是否具有正确的数据(例如,验证id = 4)
– 如果遇到错误,使用’raise’方法引发异常.
在我第一次微弱的尝试中,我尝试了以下内容:
puts get_response.body if get_response.code == 200 puts "********* Get current user successful" else puts "Get current user Failed!!" end
解决方法
而不是提出异常,写一个测试.
一个直接的方法,使用从std lib的json解析器和单元测试框架:
require 'minitest/autorun' require 'rest_client' require 'json' class APITest < MiniTest::Unit::TestCase def setup response = RestClient.get("https://applicationname-api-sBox02.herokuapp.com/api/v1/users",{ "Content-Type" => "application/json","Manufacturer-Token" => "8d0693ccfe65104600e2555d5af34213" } ) @data = JSON.parse response.body end def test_id_correct assert_equal 4,@data['id'] end end
用ruby $filename执行
JSON.parse将JSON字符串解析为ruby hash
如果您使用的是ruby 1.8,则需要安装json gem并安装minitest gem,或者切换到较旧的testunit API.如果您选择后者,则需要更改require’minitest / autorun’ – >需要’test / unit’和MiniTest :: Unit :: TestCase – >测试::单位:: TestCase的