ダブル/スタブを使用してテストを作成しています。偽の値を返したいのですが、代わりに偽の値と実際の値を取得しています。これが私のコントローラーとスペックファイルです。モデルには何も含まれていません。私が間違っていることは何ですか?私の推測では、私はそれを完全に間違っています。PS私はスペックやモック/スタブのものにちょっと新しいです
コントローラ:
def destroy
uri = URI('example.com')
request_params = {'requestId' => @session.id,
'merchantId' => MERCHANTID,
'locale' => LOCALE,
'partnerId' => PARTNERID,
'sessionId' => params[:id]
}
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Post.new uri.request_uri
request.set_form_data(request_params)
#request.content_type = 'application/x-www-form-urlencoded'
response = http.request request # Net::HTTPResponse object
json = ActiveSupport::JSON.decode(response.body)
puts '<<<<<<<<<'
puts json
if json['expireSessionRes']['isError'] == false
render :json => {:status => 'ok', :message => 'logged out'}
else
render :json => {:status => 'failed', :message => 'logout failed'}
end
end
スペックファイル:
it "should correctly return isError false if logout was sucessful" do
SID = "123"
@data3 = {:id => SID}
delete :destroy, default_rest_params.merge(@data3)
response = double('http.request')
response.stub!(:body => '{"expireSessionRes"=>{"requestId"=>"72", "sessionId"=>"123", "isError"=>false, "desc"=>""}}')
puts response.body
end
受信:
{"expireSessionRes"=>{"requestId"=>"94", "isError"=>true, "desc"=>"Session exipred", "errorCode"=>"-10011"}}
{"expireSessionRes"=>{"requestId"=>"72", "sessionId"=>"123", "isError"=>false, "desc"=>""}}
最初はコントローラーから、2番目はスタブから来ます