gpt4 book ai didi

ruby-on-rails - 如何在我的规范中批准 PayPal 付款?

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:48 26 4
gpt4 key购买 nike

我是 PayPal API 的新手。

我的 Rails 服务器会检查每笔付款是否获得批准。我正在为它编写规范而苦苦挣扎,因为我不知道如何“伪造”批准。

我想到了 3 种可能性:

  1. 我不检查我的规范是否获得批准。
  2. 我创建了一个真正的沙盒支付,并始终使用该支付的 paymentId
  3. 我只测试隐性付款(不需要批准)。

这 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 docs关于 double 。

关于ruby-on-rails - 如何在我的规范中批准 PayPal 付款?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51157586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com