我有一個控制器應該只接受應用程序/ json或/。我檢查這個控制器類:如何測試僅JSON控制器返回406
...
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
...
然後在耙與accept_response未定義的方法錯誤中止由於響應爲零。我認爲沒有設置正常的執行流程會在未知格式異常中中止。但是如果我沒有斷言這個例外,那麼測試將會隨着它而中止。
每隔406個時候拋出異常是個好主意嗎?我怎樣才能測試,我得到了一個406返回?
這只是我的意見,但我不會在這種情況下,產生異常。我一定會將其傳播回JSON接口的客戶端,並讓他們根據其設計和業務邏輯對其做出反應。 – jaydel