如何让 Sinatra 模拟拒绝连接?
How can I make Sinatra simulate a refused connection?
我在运行集成测试时一直在使用Sinatra with Rack来模拟外部服务,想写一个服务器宕机的测试。是否可以让 Sinatra 在不完全关闭服务器进程的情况下模拟 'Connection Refused' 错误?
到目前为止我已经尝试过:
- 引发异常
- 立即关闭流,如图所示 here,在方法 returns 或任何其他方法之前:
post '/external_app' do
stream(:keep_open) do |out|
out.close
end
end
谢谢!
您正在尝试测试服务器关闭,您所做的方法仍然依赖于 sinatra 服务器的响应。
您可以在您的 http 客户端中设置一个非常短的连接超时(任何 http 客户端都应该能够做到这一点)
然后在您的 sinatra 操作块中使用类似 sleep
的方法,其 x
秒大于您设置的最大超时时间。
但实际上你可能不需要让事情变得复杂,你可以只抛出你的 http 客户端因连接超时而抛出的异常(以及任何其他连接异常),然后测试你的应用程序是否能够捕获并相应地处理异常。
我在运行集成测试时一直在使用Sinatra with Rack来模拟外部服务,想写一个服务器宕机的测试。是否可以让 Sinatra 在不完全关闭服务器进程的情况下模拟 'Connection Refused' 错误?
到目前为止我已经尝试过:
- 引发异常
- 立即关闭流,如图所示 here,在方法 returns 或任何其他方法之前:
post '/external_app' do stream(:keep_open) do |out| out.close end end
谢谢!
您正在尝试测试服务器关闭,您所做的方法仍然依赖于 sinatra 服务器的响应。
您可以在您的 http 客户端中设置一个非常短的连接超时(任何 http 客户端都应该能够做到这一点)
然后在您的 sinatra 操作块中使用类似 sleep
的方法,其 x
秒大于您设置的最大超时时间。
但实际上你可能不需要让事情变得复杂,你可以只抛出你的 http 客户端因连接超时而抛出的异常(以及任何其他连接异常),然后测试你的应用程序是否能够捕获并相应地处理异常。