Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 插入utc_日期时间值时混合测试中的CaseClauseError_Elixir_Phoenix - Fatal编程技术网

Elixir 插入utc_日期时间值时混合测试中的CaseClauseError

Elixir 插入utc_日期时间值时混合测试中的CaseClauseError,elixir,phoenix,Elixir,Phoenix,在我的Phoenix应用程序中,我有一个控制器,其delete功能实际上不会从数据库中删除项目,而是将其存档,并插入一个:utc_datetime值,该值对应于项目被“删除”的日期时间。以下是函数: def delete(conn, %{"id" => contact_id}) do contact = Contact.get(contact_id) case Contact.archive(contact) do {:ok, _contact} ->

在我的Phoenix应用程序中,我有一个控制器,其
delete
功能实际上不会从数据库中删除项目,而是将其存档,并插入一个
:utc_datetime
值,该值对应于项目被“删除”的日期时间。以下是函数:

def delete(conn, %{"id" => contact_id}) do
  contact = Contact.get(contact_id)

  case Contact.archive(contact) do
    {:ok, _contact} ->
      conn
      |> put_flash(:info, "Contact successfully deleted.")
      |> redirect(to: contact_path(conn, :index))
    {:error, _changeset} ->
      conn
      |> put_flash(:error, "Contact deletion failed.")
      |> redirect(to: contact_path(conn, :index))
  end
end
这是
联系人。存档

def archive(contact) do
  contact
  |> User.changeset(%{archived_at: DateTime.utc_now()})
  |> Repo.update()
end
我的测试失败,出现以下错误:
(CaseClauseError)没有匹配的case子句:{{{2018,9,6},{6,39,5,659053}
。以下是我为
删除设置测试的方法:

client =
  :provider_user
  |> build(
    provider: conn.assigns.provider,
    type: "external",
    billable: true,
    first_name: "client",
    last_name: "user",
    email: "client@user.com"
  )
  |> set_password("password")
  |> insert

describe "delete contact" do
  test "deletes contact with valid params", %{conn: conn, client: client} do
    conn = delete(conn, contact_path(conn, :delete, client))

    assert redirected_to(conn) == contact_path(conn, :index)
    assert Repo.get(User, client.id).archived_at
  end
end
如果有任何关联,下面是
联系人的getter函数

def get(contact_id, preload \\ []) do
  query =
    from(
      u in User,
      where: is_nil(u.archived_at) and u.id == ^contact_id,
      preload: ^preload
    )

  Repo.one!(query)
end

它可能在以下行失败:
Repo.get(User,client.id).archived\u位于
。请将
IO.inspect(Repo.get(User,client.id).archived\u at)
放在它前面。我建议
assert{{{{{{},{{{{},{{{{,},{{,{,{,{,}}}}=Repo.get(User,client.id)。存档在
可能会修复它。@mudasobwa我删除了那一行,我仍然会得到同样的错误。请你首先在哪一行发布错误?@mudasobwa,根据stacktrace,在这一行:
test delete contact删除带有有效参数的contact
绘图变厚。您是否实施了
setup
setup\u所有
回调?请分享这些。