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 Wallaby-Ecto.Registry.lookup错误_Elixir_Phoenix Framework_Wallaby - Fatal编程技术网

Elixir Wallaby-Ecto.Registry.lookup错误

Elixir Wallaby-Ecto.Registry.lookup错误,elixir,phoenix-framework,wallaby,Elixir,Phoenix Framework,Wallaby,我正在努力做一个新的凤凰城项目。我已经按照自述文件中的安装说明进行了操作,但是当我尝试运行基本测试时,我遇到了一个EXTO注册表错误: 1) test home page has welcome message (WallabyTestWeb.HomePageTest) test/wallaby_test_web/features/home_page_test.exs:6 ** (ArgumentError) argument error stacktrace:

我正在努力做一个新的凤凰城项目。我已经按照自述文件中的安装说明进行了操作,但是当我尝试运行基本测试时,我遇到了一个EXTO注册表错误:

1) test home page has welcome message (WallabyTestWeb.HomePageTest)
     test/wallaby_test_web/features/home_page_test.exs:6
     ** (ArgumentError) argument error
     stacktrace:
       (stdlib) :ets.lookup_element(Ecto.Registry, nil, 3)
       (ecto) lib/ecto/registry.ex:18: Ecto.Registry.lookup/1
       (ecto) lib/ecto/adapters/sql/sandbox.ex:529: Ecto.Adapters.SQL.Sandbox.proxy_pool/1
       (ecto) lib/ecto/adapters/sql/sandbox.ex:469: Ecto.Adapters.SQL.Sandbox.checkout/2
       (wallaby_test) test/support/feature_case.ex:18: WallabyTestWeb.FeatureCase.__ex_unit_setup_0/1
       (wallaby_test) test/support/feature_case.ex:1: WallabyTestWeb.FeatureCase.__ex_unit__/2
       test/wallaby_test_web/features/home_page_test.exs:1: WallabyTestWeb.HomePageTest.__ex_unit__/2
以下是失败的测试:

defmodule WallabyTestWeb.HomePageTest do
  use WallabyTestWeb.FeatureCase, async: true

  import Wallaby.Query

  test "home page has welcome message", %{session: session} do
    require IEx
    IEx.pry()

    session
    |> visit("/")
    |> assert_has(css("h2", text: "Welcome to Phoenix!"))
  end
end
以下是功能案例:

defmodule WallabyTestWeb.FeatureCase do
  use ExUnit.CaseTemplate

  using do
    quote do
      use Wallaby.DSL

      alias WallabyTestWeb.Repo
      import Ecto
      import Ecto.Changeset
      import Ecto.Query

      import WallabyTestWeb.Router.Helpers
    end
  end

  setup tags do
    :ok = Ecto.Adapters.SQL.Sandbox.checkout(WallabyTestWeb.Repo)

    unless tags[:async] do
      Ecto.Adapters.SQL.Sandbox.mode(WallabyTestWeb.Repo, {:shared, self()})
    end

    metadata = Phoenix.Ecto.SQL.Sandbox.metadata_for(WallabyTestWeb.Repo, self())
    {:ok, session} = Wallaby.start_session(metadata: metadata)
    {:ok, session: session}
  end
end
以下是我的设置更改的整个PR:

我正在使用Elixir1.6,PhantomJS2.1.1

$ elixir --version
Erlang/OTP 20 [erts-9.1.4] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir 1.6.0-dev (882c2bd) (compiled with OTP 20)

$ brew info phantomjs
phantomjs: stable 2.1.1 (bottled)

这当然不是测试套件的问题,因为在使用Elixir1.5或更高版本和Phoenix 1.3时,这个问题非常常见。也许在上面的日志中,您可能会发现类似的内容:

** (DBConnection.OwnershipError) cannot find ownership process for 
#PID....
尝试运行
TEST
环境的所有迁移,然后重新运行测试。只需一个命令即可完成此操作:

MIX_ENV=test mix ecto.reset && mix test

exto.reset
将重置您的数据库(检查您的
mix.exs
文件),它是用于重新创建数据库、迁移数据库和再次运行种子的别名。

这肯定不是您的测试套件的问题,因为在使用Elixir 1.5或更高版本和Phoenix 1.3时,此问题非常频繁。也许在上面的日志中,您可能会发现类似的内容:

** (DBConnection.OwnershipError) cannot find ownership process for 
#PID....
尝试运行
TEST
环境的所有迁移,然后重新运行测试。只需一个命令即可完成此操作:

MIX_ENV=test mix ecto.reset && mix test

exto.reset
将重置您的数据库(检查您的
mix.exs
文件),该文件是用于重新创建数据库的别名,迁移它并再次运行seed。

结果是一个复制/粘贴问题结果是一个复制/粘贴问题向我们展示
功能/主页\u测试的上下文。exs:6
请。@mudasobwa已添加!向我们展示
功能/主页\u测试的上下文。exs:6
请。@mudasobwa添加了!不幸的是,没有骰子。在重置和运行测试时,我在
/usr/local/var/log/postgres.log
中看到以下内容:
错误:数据库“cheese\u log\u test”已存在
语句:创建数据库“cheese\u log\u test”编码为“UTF8”这就是原因所在。您的psql帐户无法删除此数据库,可能也没有其他权限,因此您的repo测试无法工作。在错误日志中很明显,ecto是测试失败的原因。不幸的是,没有骰子。在重置和运行测试时,我在
/usr/local/var/log/postgres.log
中看到以下内容:
错误:数据库“cheese\u log\u test”已存在
语句:创建数据库“cheese\u log\u test”编码为“UTF8”这就是原因所在。您的psql帐户无法删除此数据库,可能也没有其他权限,因此您的repo测试无法工作。在错误日志中,很明显,ecto是测试失败的原因。