ruby-on-rails 如何测试外部webhook向我的应用程序发出的POST请求?

bkkx9g8r  于 2023-02-01  发布在  Ruby
关注(0)|答案(2)|浏览(117)

各位这是我的剧本
我想测试这个外部webhook
有没有办法使用VCR或其他工具来记录webhook对我的rails应用程序发出的POST请求,以便我可以在Rspec中使用它来运行我的测试?
webhook的主体很长,而且非常具体,这就是为什么我想以某种方式记录请求
有没有办法做到这一点?
我尝试Requestbin和Charles来记录请求,但到目前为止还没有成功使它们工作

w8f9ii69

w8f9ii691#

假设当你说问题输入“太长太具体”时,你的意思是在测试中构造它会很不方便:一个简单的解决方案是将帖子主体放入单独的文件中。
您可以将示例POST主体另存为test/spec/下的文件,然后读取它并在请求规范中发布到您的应用:

post(
  my_webhook_path, 
  params: JSON.parse(File.read(path_to_json_file) # assuming the post body is JSON 
  # expect/assert some things about the effects/response of the request
)

在文档中,您将看到您还可以添加头,因此应该可以构造精确的请求。

pftdvrlh

pftdvrlh2#

我不认为录像机是最好的工具。它是用来记录发出的请求,而不是接收的请求。
我猜你已经有了一个控制器和一个动作来接受这些请求,确保你的应用程序正在运行,并且可以被将要ping你的服务访问(ngrok非常适合)
然后在你的行动中

def my_action_accepting_webhook_requests
  puts request_parameters
  puts query_parameters
end

你可以从控制台读取参数(或者保存到文件),决定是在规范中硬编码还是保存为文件,然后在request spec中重用它并测试你的webhook。

相关问题