[英]How can I approve a PayPal payment in my specs?
我是PayPal API的新手。
我的Rails服務器會檢查每筆付款是否被批准。 我正在努力為其編寫規范,因為我不知道該如何“偽造”批准。
我想出了3種可能性:
paymentId
。 這三個對我來說都不是很好。
因此問題仍然存在: 如何為規格創建批准的付款?
您應該模擬來自api的響應。 您不需要實際執行請求,也沒有理由不對處理api請求結果的代碼進行測試。 假設您要模擬以下代碼:
#controller.rb
def initialize(dependencies = {})
@payment_service = dependencies.fetch(:paypal_api) do
Payment
end
end
...
def payment_method
payment = @payment_service.find("PAY-57363176S1057143SKE2HO3A")
if payment.execute(payer_id: "DUFRQ8GWYMJXC")
# Do some stuff
return 'success!'
end
'failure!'
end
您可以在Rspec中使用類似以下內容來模擬您的響應:
# controller_spec.rb
let(:paypal_api) { double('Payment') }
let(:mock_payment) { double('PayPal::SDK::REST::DataTypes::Payment') }
let(:mock_controller) { described_class.new(paypal_api: paypal_api) }
...
it 'returns the correct result when the payment is successfull' do
mock_response = {
"paymentExecuteResponse":{
"id":,
"intent":"sale",
"state":"approved",
"cart":,
"payer":{
"payment_method":"paypal",
"payer_info":{
"email":,
"first_name":,
"last_name":,
"payer_id":,
"phone":,
"country_code":
}
}
... some other stuff...
}
}
...
# This mocks the find method from the sdk
allow(paypal_api).to receive(:find).and_return(mock_payment)
# This mocks the execution of the payment
allow(mock_payment).to receive(:execute).and_return(mock_response)
result = mock_controller.payment_method
expect(result).to 'success!'
end
我還建議您查看有關雙打的rspec文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.