You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RSpec Rails控制器测试因ActionController::UnknownFormat失败排查

问题原因与解决方案

这个报错属于测试代码的问题,和rails_helper无关,完全可以通过修正测试代码避免。

报错根源

控制器的show动作里,respond_to只配置了format.json的处理逻辑,但你当前的测试请求没有明确告知服务器客户端接受JSON格式。Rails默认会将未指定格式的请求识别为HTML格式,导致找不到对应的格式处理分支,从而抛出ActionController::UnknownFormat错误。

修正测试代码的两种方式

方式一:指定请求格式

在get请求中添加format: :json参数,明确请求JSON格式:

get "/api/v1/students/some-portfolio", format: :json

方式二:设置请求头

通过headers参数设置Accept为application/json,告诉服务器客户端接受JSON响应:

get "/api/v1/students/some-portfolio", headers: { "Accept" => "application/json" }

额外说明

如果你的测试是type: :controller类型(而非当前的type: :request),还可以用如下写法:

get :show, params: { slug: "some-portfolio" }, format: :json

但针对当前的请求类型测试,前面两种方式更适配。

内容的提问来源于stack exchange,提问作者user3724786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:09:27