测试Rails 404和500 JSON响应



我正在用Rails构建JSON后端API,但我似乎不明白:如何使用RSpec测试Rails默认的错误响应?例如,对于一般的404请求,我目前有以下请求规范:

require 'rails_helper'
RSpec.describe '404 errors' do
let(:json) { JSON.parse(response.body) }
before { get '/noexistent', headers: headers }
# examples
end

然而,Rails拒绝提供它通常会产生的404响应,而是简单地提出:

ActionController::RoutingError:
没有匹配[GET]"的路由/404〃;

我已尝试从config/environments/test.rb中删除config.consider_all_request_local = true,但没有结果。

注意,我已经看到了这个问题(这是我对consider_all_requests_local的想法(,但它适用于开发,而不是测试。


编辑:我使用config.exceptions_app = self.routes将错误重定向到ErrorsController。这在开发或生产中很好,但在测试时不行。在测试时,我仍然会得到上面的错误。有什么想法吗?

事实证明,答案相当简单。我不得不在config/environments/test.rb:中更改这一行

# Raise exceptions instead of rendering exception templates.
config.action_dispatch.show_exceptions = false

至:

# Do not raise exceptions instead of rendering exception templates.
config.action_dispatch.show_exceptions = true

相关内容

  • 没有找到相关文章

最新更新