我正在用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