我有一个只接受application / json或 / 的控制器。我在控制器类中检查了这个:
...
include ActionController::MimeResponds
before_action :require_json
def require_json
respond_to :json
end
....
虽然每次客户端使用无效的接受标头时日志中都存在UnknownFormat错误,但效果非常好。控制器正确返回HTTP 406不可接受。
在测试中我写道:
...
test 'do not accept plain text' do
assert_raises ActionController::UnknownFormat do
get '/api/v1/ping', headers: {'Accept' => 'text/plain'}
end
assert_response :not_acceptable
...
然后Rake在accept_response中以未定义的方法错误中止,因为响应为零。我假设未设置正常执行流程在未知格式异常中止。但如果我没有断言异常,那么测试就会中止它。
每406次抛出异常是个好主意吗?我如何测试我得到406返回?