目前,我捕获到如下错误not_found
def show
begin
@task = Task.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
render json: { error: e.to_s }, status: :not_found and return
end
并且rspec测试将类似于expect(response).to be_not_found
,但是我不想在每个函数(更新、创建、销毁等)中都这样做(抢救ActiveRecord::RecordNotFound =〉e)
还有别的办法吗
比如这样
rescue_from ActiveRecord::RecordNotFound, with: :not_found
def not_found
respond_to do |format|
format.json { head :not_found }
end
end
但是我不知道我怎么用它来测试
我想用同样的方法测试
expect(response).to be_not_found
2条答案
按热度按时间a0zr77ik1#
我认为您的原始实现使用错误节点是一个更好的响应,但您修改的更改是一个更好的处理方式,因此我建议通过以下方式将这两个概念结合起来
在这种情况下,您应该能够保持当前的测试,同时避免在每个请求中单独处理的需要。
nfeuvbwi2#
您可以将以下代码添加到您的application_controller. rb中。
下面是使用RSpec的测试用例的简单示例。根据您的需求进行修改。
人员_控制器.rb
R规范