在Rails中,如何为测试存根websocket消息?

时间:2017-12-04 19:54:24

标签: ruby-on-rails websocket capybara minitest

该应用程序在Capybara上使用Minitest on Rails 4。

我想编写一个集成或功能测试来存根websocket连接(应用程序使用Faye作为客户端)来返回特定的消息(就像我以前用过的Webmock)。 / p>

这可能吗?如果是这样,你能提供一个例子吗?我的研究没有发现任何例子。

1 个答案:

答案 0 :(得分:1)

您的研究没有显示任何示例,因为它并不是您在功能测试中应该做的事情。功能测试应该是端到端黑盒测试,您可以根据应用程序的需要配置数据以生成所需的结果,然后通过浏览器完成所有交互(没有技术上改变您的应用程序代码的模拟/存根) 。此外,当涉及浏览器和第三方服务之间的连接时,您的应用程序中无处可以模拟它。

可以使用像puffing-billy这样的可编程代理从浏览器中截取websocket连接,但是为了测试目的,它通常更清晰地生成第三方服务的小型虚假版本(sinatra app,等)当您需要制作自定义响应时,将浏览器指向该而不是原始服务。此外,还有很多假货,取决于您使用的服务(假条纹,假s3等),这可能提供您正在寻找的功能。