gpt4 book ai didi

ruby-on-rails - 如何测试 webhooks/远程回调?

转载 作者:行者123 更新时间:2023-12-02 00:15:44 25 4
gpt4 key购买 nike

我正在使用 rspec 和 capybara 编写测试用例以与 Cheddargetter(支付解决方案提供商)集成。我可以毫无问题地测试我对 CG 的 API 的请求,但是我不确定如何在 CG 的 API 向 Rails 应用程序提供网络回调时进行最佳测试。

这类似于 PayPal 的 IPN 功能,在客户付款后,网络 Hook 回调会发送到您的应用。

只是想知道是否有人知道测试/模拟这个的最佳方法是什么?

最佳答案

您可能正在使用 Controller 来处理POST 请求,我们称它为WebhookController

您可以简单地测试带有您需要的参数的帖子是否正在执行您想要的操作。例如,集成测试(在测试单元中,但 rspec 做同样的事情)。

Rspec 可能有不同版本的 fixture_file_upload 用于上传/添加 xml 文件,但是 according to this stack question看起来你也可以使用它。将文件粘贴到 spec/files 中。

无论如何,对于网络和新手,您将测试您的 Delayed::Job 调用是否在另一个测试中实际工作。像这样的东西:


class GetWebhookTest < ActionController::IntegrationTest
fixtures :all
def recieve_webhook
post '/webhook/338782', fixture_file_upload('webhook.xml', 'application/xml')
end
#Test you do what the outcome of your POST would be.
#this is refactored but you can shove the post line where receive_webhook is
test "recieve a webhook via xml" do
assert_difference('RawData.count') do
receive_webhook
end
end

test "make sure the status is 200" do
recieve_webhook
assert_response :success
end
#Test 1 will fail before this, but i was more/too thorough back in the day
test "Delayed Job increases" do
assert_difference "Delayed::Job.count", 1 do
recieve_webhook
end
end
end

同样,Rspec 也有类似 response.should be_success 和他们的 Object.count 差异方法。根据您的情况进行调整。关键是fixture_file_upload

关于ruby-on-rails - 如何测试 webhooks/远程回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288208/

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