【发布时间】:2016-04-06 17:10:53
【问题描述】:
在应用程序中,用户可以填写 3 个字段(和 1 个隐藏字段)并单击“加载响应”,这将对外部 API 进行 ajax API 调用。对外部 API 的调用位于 lib 的包装器中。此包装器存储用户不需要输入但 API 要求的其他必填字段。
我看过其他一些关于测试 API 调用的帖子,但我很难将它们与这篇文章进行比较并从中学到一些东西,因为有额外的包装器。
基于系统架构测试此 API 的测试是什么样的?
在视图中:
data = ->
string_ssid = '#{@bar.ssID}'
{
approval_code: $('#approval_code').val()
rejection_code: $('#rejection_code').val()
rejection_message: $('#rejection_message').val()
ssid: string_ssid
}
ajax_call = ->
$('#load_response').on 'click', ->
$.ajax
url: '/fooview/api_response'
data: data()
success: (d) ->
$('#api_response').html '<p>' + JSON.stringify(d) + '</p>'
return
error: (d, status, e) ->
$('#api_response').html '<p>Error: ' + e + ', ' + status + '</p>'
return
return
return
路线:
get '/baz/api_response', to: 'baz#api_response'
控制器:
def api_response
render json: BazWrapper.get_api_response(params)
end
包装器:
module BazWrapper
@base_url = Enviro.get(:foo) + '/message/json'
def self.get_api_response(params)
query_values = {
api_key: Enviro.get(:foo, :api_key),
approval_code: params[:approval_code],
rejection_code: params[:rejection_code],
rejection_message: params[:rejection_message],
ssid: params[:ssid],
(..other required params hard-wired..)
}
HTTParty.post(
URI.encode(@base_url),
query: query_values
)
end
end
【问题讨论】:
-
我不确定你到底在问什么。
-
添加了一句话来澄清我在问什么:)
标签: ruby-on-rails ruby json ruby-on-rails-3 rspec