我一直在使用Sinatra with Rack在运行集成测试时模拟外部服务,并希望在服务器关闭时为该案例编写测试。是否有可能让Sinatra在不完全关闭服务器进程的情况下模拟“连接被拒绝”错误?
到目前为止,我已经尝试过:
post '/external_app' do stream(:keep_open) do |out| out.close end end
谢谢!
答案 0 :(得分:0)
您正在尝试关闭服务器,您所做的方法仍然依赖于sinatra服务器的响应。
你可以在你的http客户端设置一个非常短的连接超时(任何http客户端应该能够做到这一点)
然后在你的sinatra动作块中使用sleep
方法,x
秒大于你设置的最大超时时间。
但实际上你可能不需要做一些复杂的事情,你可以抛出一个异常,你的http客户端抛出连接超时(和任何其他连接异常),并测试你的应用程序是否能够捕获和处理相应的例外。