0
我使用RESTClient實現寶石打造的API客戶端和對API的調用都通過這種方法在這裏RSpec測試RestClient :: Request.execute:任何方式查看請求?
def call(api_name,api_endpoint,token = nil,*extra_params)
endpoint = fetch_endpoint(api_name,api_endpoint)
params = {}
endpoint['params'].each_with_index { |p,i| params[p] = endpoint['values'][i] }
puts params
if token.nil? then
response = RestClient::Request.execute(method: endpoint['method'], url: endpoint['url'], params: params.to_json)
else
response = RestClient::Request.execute(method: endpoint['method'], url: endpoint['url'], headers: {"Authorization" => "Bearer #{token}"}, params: params.to_json)
end
response
end
正如你可以看到,我要做的就是安裝帶參數/值的散列呼叫處理並調用RestClient::Request#execute
得到迴應。
它發生了一些我的測試中,像這樣的
it 'request_autorization' do
obj = SpotifyIntegration.new
response = obj.call('spotify','request_authorization',nil,state: obj.random_state_string)
myjson = JSON.parse(response.body)
expect(myjson).to eq({})
end
被返回400 Bad request
錯誤,我真的不知道爲什麼。其他測試,像這樣一個
it 'my_playlists (with no authorization token)' do
obj = SpotifyIntegration.new
expect {
response = obj.call('spotify','my_playlists')
}.to raise_error(RestClient::Unauthorized,'401 Unauthorized')
end
處理相同的方法,運行非常好。
有沒有辦法看到發送的請求?我的意思是,看看RestClient是如何掛載/發送我的請求到相應的API?可能是這樣,我可以理解發生了什麼。
通過「查看請求」我的意思是這樣
puts RestClient::Request.prepared_request
或
puts RestClient::Request.prepared_url
我搜索的RESTClient實現文檔,沒有發現任何類似的,但也許一些你知道該怎麼做這個。
是否'.new'代替'.execute'給你一些你可以使用的東西?只是猜測基於文檔[這裏](http://www.rubydoc.info/gems/rest-client/RestClient/Request#initialize-instance_method) –
我要檢查。確實有一些可能性。謝謝! –
您可以嘗試使用'RestClient.log'獲取更多信息,或者使用WebMock測試您是否看到您希望生成的Web請求。 – alberge