首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec禁用bypass_rescue

RSpec禁用bypass_rescue
EN

Stack Overflow用户
提问于 2015-07-16 18:49:26
回答 1查看 693关注 0票数 2

我有一个尺寸不错的rails应用程序,上面有一堆控制器规格。我的所有控制器都是从具有默认错误处理程序的ApiController继承的:

代码语言:javascript
复制
class Api::V1::ApiController < ApplicationController
  rescue_from StandardError, with: :default_error_handler

我想要的行为是:

  1. 默认情况下,在规范中,如果抛出异常,则绕过rescue_from。这样,当规范中出现异常时,我可以在rspec输出中看到完整的堆栈跟踪。
  2. 对于某些显式测试异常抛出条件的特定规范,不会绕过rescue_from。

通过在全局上使用rspec的方便的bypass_rescue函数,我可以获得#1:

代码语言:javascript
复制
RSpec.configure do |config|
  config.before :each do
    bypass_rescue
  end
end

然而,我需要一些方法来说明不应该绕过救援的少数情况。理想的情况是:

代码语言:javascript
复制
describe Api::V1::SomeController do
  it 'handles an exception' do
    dont_bypass_rescue
    get :something_that_throws_an_exception
  end
end

不过,我似乎找不到一个很好的方法来完成这个任务。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-16 19:06:33

你可以这样做:

代码语言:javascript
复制
config.before(:each, type: :controller) do |example|
  bypass_rescue unless example.metadata[:with_rescue]
end

然后:

代码语言:javascript
复制
describe Api::V1::SomeController do
  it 'handles an exception', with_rescue: true do
    get :something_that_throws_an_exception
  end
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31462221

复制
相关文章

相似问题

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