我有现有的功能,其中specs调用控制器的HTTP PUT方法,后者又调用模型的方法来获取一些JSON数据。 API。
class SomeModel
def GetData()
uri = URI.parse('http://api.mydomain.com/getmydata/123/ohmyurl')
Net::HTTP.start(uri.host, uri.port, :read_timeout => 200) do |http|
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
unless response.body == "null"
return JSON.parse(response.body)
end
#......
end
end
end
class SomeController < ApplicationController
def update
#...
@model.GetData()
#...
end
end
#......specs............
put :update
我需要在SomeModel
中模拟API。到目前为止,我已经尝试过:
#......specs............
before do
stub_request(:get, /api.mydomain.com/)
.with(headers: {'Accept'=>'application/json' })
.to_return(status: 200, body: {id: 1, secondParam: '324'}.to_json, headers: {})
end
#.......
put :update
result = JSON.load response.body
expect(result['secondParam']).to eq("324")
无法模拟API调用并调用实际的API。
请忽略语法错误