如何解决测试期间“无法查找 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 数组中。
希望这能解决?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。