gpt4 book ai didi

ruby-on-rails - 处理测试中的响应代码而不会污染ApplicationController

转载 作者:行者123 更新时间:2023-12-03 08:53:58 25 4
gpt4 key购买 nike

我的问题是,我们在SolanoCI中收到了神秘的504错误,我试图找到一种干净的方法来仅在测试环境中处理它们,而没有在ApplicationController中添加特定于测试的代码。

我试过通过测试安装程序来设置默认处理程序,如下所示:

allow(ApplicationController).to receive(:timeout).and_return { 
#do a bunch of stuff to try to pull out request information
}

但是我发现它缺少一些可访问的重要信息,例如原始请求url和所有stacktrace信息。

欢迎任何建议。

最佳答案

我认为在这种情况下,最简单的方法是让Solano在您的机器上为您运行debugging session(它们使您可以ssh访问其服务器,因此您可以自己运行测试)。

在这样的黑箱情况下,这是一个实时保护程序。您可以多次运行测试,并在那里使用各种调试工具。您可能必须先安装它们,因为Solano尝试不从您的Gemfile中安装其他工具(例如pry)以最大程度地缩短测试的运行时间。

只需通过联系表格将其写出,它们就会为您提供访问权限。完成 session 后,别忘了停止该 session ,因为它的运行时间是从计划中的工作时间中扣除的。

希望能帮助到你。

编辑:Anonymous controller功能似乎非常适合您的情况:

Use the controller method to define an anonymous controller that will inherit from the described class. This is useful for specifying behavior like global error handling.



因此,您可以执行以下操作:
RSpec.describe ApplicationController, :type => :controller do
controller(ApplicationController) do

rescue_from Timeout::Error, :with => :log_timeout

def log_timeout(error)
# log error as you wish
end
end

describe "handling timeout exceptions" do
it "writes some logs" do
get :index
expect(response).to have_https_status(504)
end
end
end

关于ruby-on-rails - 处理测试中的响应代码而不会污染ApplicationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32568847/

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