Ruby on rails 如何测试模块呈现的json
我已经创建了一个模块Ruby on rails 如何测试模块呈现的json,ruby-on-rails,rspec,Ruby On Rails,Rspec,我已经创建了一个模块Error:ErrorHandler,它包含在我的ApplicationController中,用于处理错误 module Error module ErrorHandler def self.included(base) base.class_eval do rescue_from StandardError do |e| respond(:standard_error, 500, e.to_s)
Error:ErrorHandler
,它包含在我的ApplicationController
中,用于处理错误
module Error
module ErrorHandler
def self.included(base)
base.class_eval do
rescue_from StandardError do |e|
respond(:standard_error, 500, e.to_s)
end
rescue_from CustomError do |e|
respond(e.error, e.status, e.message.to_s)
end
end
end
private
def respond(error, status, message: nil, json: Helpers::Render.json(error, status, message.instance_of?(Array) ? message : Array(message)))
# Render the json, and define the HTTP status code
render json: json, status: status
end
end
end
Helpers::Render.json
函数如下所示:
def self.json(_error, _status, _message)
{
error: _error,
status: _status,
message: _message
}.as_json
end
我试图创建一些rspec测试来检查返回的json是否如预期的那样,但是我对呈现json的测试模块有点困惑
为这种情况创建测试的正确方法是什么
我知道当前的实现简单明了,但将来会扩展,所以我想创建一个适当的测试覆盖率。这是一种有缺陷的方法,应该通过设置
config.exceptions\u app=self.routes
并创建一个路由和一个处理渲染错误的控制器来处理页数<代码>rescue_from将不会捕获路由错误或控制器外部发生的任何事件。我忘了提到应用程序是一个API,除了呈现JSON之外,它不会真正改变任何东西。我不知道为什么这种方法比我的方法有缺陷,另请参阅此类似的实现,因为这是捕获特定错误的示例,您所做的是在框架级别上捕获所有错误。这是一种有缺陷的方法,应该通过设置config.exceptions\u app=self.routes
并创建一个路由和一个控制器来处理呈现错误页面<代码>rescue_from将不会捕获路由错误或控制器外部发生的任何事件。我忘了提到应用程序是一个API,除了呈现JSON之外,它不会真正改变任何东西。我不确定为什么这种方法比我的方法有缺陷,也可以看看这个类似的实现,因为这是一个捕获特定错误的示例,您所做的是一个捕获所有应该在框架级别上完成的操作。