我是全新的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的