【问题标题】:Using response data in a controller test在控制器测试中使用响应数据
【发布时间】:2018-09-24 17:10:27
【问题描述】:

我有以下测试,其中我使用来自先前请求的数据:

test "renders user when data is valid", %{conn: conn} do
  conn = post conn, user_path(conn, :create), user: @create_attrs
  assert %{"jwt" => jwt} = json_response(conn, 201)["data"]

  conn = get (conn |> put_req_header("Authorization", "Bearer #{jwt}")), user_path(conn, :show)

  assert %{"id" => _, "email" => "some email", "password_hash" => "some password_hash"} = json_response(conn, 201)["data"]

end

但是这个测试失败了:

** (Plug.Conn.AlreadySentError) the response was already sent

如何在此处重复使用conn

【问题讨论】:

    标签: testing controller elixir phoenix-framework


    【解决方案1】:

    使用原始connGET 请求中获得所需的结果(我将conn 替换为conn1 for POST

    test "renders user when data is valid", %{conn: conn} do
      conn1 = post conn, user_path(conn, :create), user: @create_attrs
      assert %{"jwt" => jwt} = json_response(conn1, 201)["data"]
    
      conn = get (conn |> put_req_header("Authorization", "Bearer #{jwt}")), user_path(conn, :show)
    
      assert %{"id" => _, "email" => "some email", "password_hash" => "some password_hash"} = json_response(conn, 201)["data"]
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2016-07-11
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多