代码之家  ›  专栏  ›  技术社区  ›  Dave Sanders

外部沙盒:仅在单元测试中出现外部\u键\u约束错误

  •  0
  • Dave Sanders  · 技术社区  · 6 年前

    我有一个“Account”对象,它有许多“User”对象。我正在尝试使用exto.Changset.cast\u assoc更新用户的关联帐户。它在iEx中运行良好,但在单元测试中,我得到:

    (Ecto.ConstraintError) constraint error when attempting to update struct:
    * users_account_id_fkey (foreign_key_constraint)
    

    现在,我知道这与exto沙盒有关,但我不知道如何编写测试使其工作。我可以继续写这个测试,但我想知道如何让它为将来工作。

    ExUnit.start()
    
    {:ok, _} = Application.ensure_all_started(:wallaby)
    {:ok, _} = Application.ensure_all_started(:ex_machina)
    Faker.start()
    
    Application.put_env(:wallaby, :base_url, BondiWeb.Endpoint.url())
    

    我也有标准的通道盒,连接盒,数据盒,我没有改变这些。最后,my test.exs指向沙盒适配器:

    pool: Ecto.Adapters.SQL.Sandbox
    

    我尝试了几种不同的沙盒模式(:auto,:manual,:shared),但似乎不知道如何设置这个测试,以便插入两个记录并通过测试。

    我怀疑这与我使用ExMachina管理设备有关,我“做错了”。但我也尝试直接创建用户,而不使用ExMachina,这似乎也不起作用。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Dave Sanders    6 年前

    感谢所有发表评论的人。看起来确实与没有删除/重新创建的测试数据库有关。我发誓是我干的,但我想不是!

    作为记录,我做了:

    MIX_ENV=test mix ecto.reset