我有一個包含一個方法和一些條件語句的控制器。以下是該控制器的示例。如何在rspec中存儲HTTP POST請求?
class <controllername> < ApplicationController
def method
if params["c"]
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new("api_url_here")
response = http.request(req)
array = JSON.parse(response.body)
url = params["s"]
.....
elsif params["e"]
.....
else
.....
end
end
end
我寫的RSpec對上述控制器
it "should do something" do
array ="some array values"
get :method, {"c" => "value for c", "s" => "value for s"}
expect(response).to have_http_status(200)
end
我知道上面RSpec的方法是完全錯誤的。當這種情況下運行array
和response
的值是由post
獲得method
內部的呼叫和response
是HTTPBADREQUEST
如預期。
我要的是
存根在規範的情況下陣列和響應(將需要以後的操作中,這些數值)我的規格情況下,這些價值觀念,不調用HTTP POST ::裏面的method
謝謝合作! 。但是,如果我只想以'array = JSON.parse(response.body)'的方式模擬'array',並且只有使用模擬設置的值將被使用,那麼我應該使用什麼使用。 – Rocky29
我的答覆仍然是一樣的。變量'''array'''仍然是一個實例變量,並且不會公開用於模擬。錄像機真的會是你正確測試整個系統的最佳選擇。 – PressingOnAlways