Elixir Phoenix Exto.NoResultsError未自动设置404状态

Elixir Phoenix Exto.NoResultsError未自动设置404状态,elixir,phoenix-framework,Elixir,Phoenix Framework,我有以下控制器操作: def edit(conn, %{"id" => id}) do memo = Repo.get_by!(Memo, id: id, user_id: current_user(conn).id) changeset = Memo.changeset(memo) render(conn, "edit.html", memo: memo, changeset: changeset) end 通过以下测试: test "404s for editing wh

我有以下控制器操作:

def edit(conn, %{"id" => id}) do
  memo = Repo.get_by!(Memo, id: id, user_id: current_user(conn).id)
  changeset = Memo.changeset(memo)
  render(conn, "edit.html", memo: memo, changeset: changeset)
end
通过以下测试:

test "404s for editing when chosen resource does not belong to current user", %{conn: conn} do
  user = Repo.insert! %User{}
  memo = Repo.insert! %Memo{user: user}
  other_user = Repo.insert! %User{}
  assert_error_sent 404, fn ->
    conn
    |> with_current_user(other_user)
    |> get(memo_path(conn, :edit, memo))
  end
end
其中,控制器中的
current_user/1
功能从会话中查找当前用户,而
with_current_user/2
测试助手功能为测试请求设置当前用户

当我运行这个测试时,我成功地获得了一个
exto.NoResultsError
,正如我所期望的,但是状态代码是
200
,而不是
404
。我希望Phoenix应该自动设置
404
状态,但这似乎没有发生。如果我将预期更改为
assert\u error\u sent 200
,则测试通过,但这不是我想要的行为

如何确保状态为
404

如果您查看,我会尝试

    conn
    |> put_status(404)
    |> render("edit.html", memo: memo, changeset: changeset)

错误状态解析基于
Plug.Exception
协议。您是否有针对EXTO错误的实施方案?默认的实现包含在
phoenix\u-exto
包中。是的,我有
{:phoenix\u-exto,~>3.0”}
作为依赖项,并且我有一个类似的测试通过,我做了
Repo.get!(备忘录,id)
显示
备忘录控制器的
操作中。我的回答有帮助吗?@SimonH,没有,因为出现错误。我可以拯救它并设置一个404,但我希望
exto.NoResultsError
协议的
Plug.Exception
实现能够自动完成(因为这就是它被记录的功能)。