微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby – 如何测试JSON REST API

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

现在,这返回了获取当前用户是否成功,但是如何实际解析json,验证正确的id,如果发生错误则引发异常?

解决方法

而不是提出异常,写一个测试.

一个直接的方法,使用从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

Getting started with minitest

如果您使用的是ruby 1.8,则需要安装json gem并安装minitest gem,或者切换到较旧的testunit API.如果您选择后者,则需要更改require’minitest / autorun’ – >需要’test / unit’和MiniTest :: Unit :: TestCase – >测试::单位:: TestCase的

原文地址:https://www.jb51.cc/ruby/273578.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐