簡體   English   中英

如何在我的規格中批准PayPal付款?

[英]How can I approve a PayPal payment in my specs?

我是PayPal API的新手。

我的Rails服務器會檢查每筆付款是否被批准。 我正在努力為其編寫規范,因為我不知道該如何“偽造”批准。

我想出了3種可能性:

  1. 我不會檢查規格中的批准。
  2. 我創建一個真實的沙箱付款,並始終使用該付款的paymentId
  3. 我只測試隱式付款(無需批准)。

這三個對我來說都不是很好。

因此問題仍然存在: 如何為規格創建批准的付款?

您應該模擬來自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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM