运行Phoenix框架测试报Phoenix.NotAcceptableError该如何解决?
问题原因及解决方案
1. 未执行mime库强制重编译命令
mime库会在编译期读取配置,修改配置后必须执行以下命令清空旧的编译产物强制重编译,否则新配置不会生效:
mix deps.clean --build mime
执行完成后再重启服务、重新运行测试即可。
2. 路由管道未配置允许json格式
报错提示预期仅支持["html"],说明你请求所属的路由管道仅配置了接受html格式,和mime配置无关,需要修改路由配置:
- 若你开发的是API接口,直接将路由归入默认的
api管道即可,该管道默认已配置支持json格式:
# lib/[你的项目名]_web/router.ex scope "/api", YourAppWeb do pipe_through :api # 此处写你的接口路由 end
- 若你需要在默认的browser管道同时支持html和json格式,修改browser管道的
accepts配置:
pipeline :browser do plug :accepts, ["html", "json"] # 其余原有配置保持不变 end
3. 测试请求未明确指定json格式
如果仅在运行测试时触发该错误,说明测试请求没有明确声明接受json格式,两种修正方式二选一:
- 直接在请求参数中指定format:
conn = get(conn, ~p"/你的请求路径", format: :json)
- 手动添加Accept请求头:
conn = conn |> put_req_header("accept", "application/json") |> get(~p"/你的请求路径")
内容的提问来源于stack exchange,提问作者Daniel Cukier
相关产品推荐
相关产品推荐

