测试期间“无法查找 Ecto 回购”错误

问题描述

我在尝试设置新的 ecto 存储库时遇到以下异常。目前仅将其用于测试(因为我只是在进行设置)。

function getData() { var queryString = Math.random(); var cellFunction1 = '=IMPORTXML("' + SpreadsheetApp.getSheetByName("sheetname").getRange('A1').getValue() + '?' + queryString + '","'+ SpreadsheetApp.getSheetByName("sheetname").getRange('A2').getValue() + '")'; SpreadsheetApp.getSheetByName("sheetname").getRange('C1').setValue(cellFunction1); }

当我的测试使用 ** (RuntimeError) Could not lookup Ecto repo Lipwig.AnnotatedUnit.Repo because it was not started or it does not exist 时会发生这种情况。但是,当我使用 Lipwig.AnnotatedUnit.DataCase(引用 Lipwig.Repo`)时,测试运行良好。

我在项目中有以下设置。

Lipwig.DataCase

这是我的测试设置

defmodule Lipwig.Repo do
  use Ecto.Repo,otp_app: :lipwig,adapter: Ecto.Adapters.Postgres
end

defmodule Lipwig.AnnotatedUnit.Repo do
  use Ecto.Repo,adapter: Ecto.Adapters.Postgres
end

我的另一个 defmodule Lipwig.DataCase do use ExUnit.CaseTemplate using do quote do alias Lipwig.Repo import Ecto import Ecto.Changeset import Ecto.Query import Lipwig.DataCase end end setup tags do :ok = Ecto.Adapters.sql.SandBox.checkout(Lipwig.Repo) unless tags[:async] do Ecto.Adapters.sql.SandBox.mode(Lipwig.Repo,{:shared,self()}) end :ok end def errors_on(changeset) do Ecto.Changeset.traverse_errors(changeset,fn {message,opts} -> Regex.replace(~r"%{(\w+)}",message,fn _,key -> opts |> Keyword.get(String.to_existing_atom(key),key) |> to_string() end) end) end end defmodule Lipwig.AnnotatedUnit.DataCase do use ExUnit.CaseTemplate using do quote do alias Lipwig.AnnotatedUnit.Repo import Ecto import Ecto.Changeset import Ecto.Query import Lipwig.AnnotatedUnit.DataCase end end setup tags do :ok = Ecto.Adapters.sql.SandBox.checkout(Lipwig.AnnotatedUnit.Repo) unless tags[:async] do Ecto.Adapters.sql.SandBox.mode(Lipwig.AnnotatedUnit.Repo,key) |> to_string() end) end) end end 数据案例几乎相同,只是引用了另一个存储库。

我的 Lipwig.Repo 配置定义

config.exs

我的 config :lipwig,ecto_repos: [Lipwig.Repo,Lipwig.AnnotatedUnit.Repo] 配置是

test.exs

解决方法

据我所知,配置看起来不错。正如错误所暗示的那样,我认为问题可能是因为您没有在应用程序中启动 Lipwig.AnnotatedUnit.Repo

application.ex 文件夹中查找 /lib/lipwig_web 文件并确保将 Lipwig.AnnotatedUnit.Repo 添加到 children 数组中。

希望这能解决?