首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不污染ApplicationController的情况下在测试中处理响应代码

在不污染ApplicationController的情况下在测试中处理响应代码
EN

Stack Overflow用户
提问于 2015-09-14 15:47:07
回答 1查看 119关注 0票数 0

我的问题是,我们在SolanoCI中收到了神秘的504错误,并且我试图找到一种干净的方法,只在测试环境中处理这些错误,而不将特定于测试的代码添加到ApplicationController中。

我通过测试设置尝试了一个默认处理程序,如下所示:

代码语言:javascript
运行
复制
allow(ApplicationController).to receive(:timeout).and_return { 
  #do a bunch of stuff to try to pull out request information
}

但是我发现它缺少一些可访问的重要信息,比如原始请求url和任何堆栈跟踪信息。

欢迎任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-15 05:52:28

在这种情况下,我认为最简单的方法是让Solano为您在他们的机器上运行一个调试会话 (它们允许您访问自己的服务器,这样您就可以自己运行测试)。

在这样的黑匣子情况下,这是一个实时保护程序。您可以多次运行测试,并在那里使用各种调试工具。您可能必须先安装它们,因为Solano试图不从Gemfile (如pry)安装额外的工具,以尽量减少测试的运行时间。

只要通过联系表格写下来,他们就会给你一个访问权限。不要忘了在你完成工作后停止它,因为它运行的时间是从计划中的工时中扣除的。

希望能帮上忙。

编辑:似乎匿名控制器功能非常适合您的情况:

使用controller方法定义将从所述类继承的匿名控制器。这对于指定诸如全局错误处理之类的行为非常有用。

所以,你可以这样做:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32568847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档