首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wallaby Ecto.Registry.lookup误差

Wallaby Ecto.Registry.lookup误差
EN

Stack Overflow用户
提问于 2017-11-20 00:12:38
回答 2查看 636关注 0票数 1

我想让瓦拉比做一个新的凤凰城项目。我遵循了自述文件中的设置说明,但是当我尝试运行基本测试时,我得到了一个Ecto注册表错误:

代码语言:javascript
复制
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

下面是失败的测试:

代码语言:javascript
复制
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

这是一个特例:

代码语言:javascript
复制
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:测试/拉/1/文件

我正在使用药剂1.6,PhantomJs 2.1.1。

代码语言:javascript
复制
$ 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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-23 08:00:15

原来这是个复制/粘贴问题

我的回购是在一个单独的应用程序,所以在FeatureCase,我取代了WallabyTestWeb.RepoWallabyTest.Repo,现在的测试是快乐的!

e:提示是,在运行测试时,我只在日志中获得Postgres错误,而不是在执行mix ecto.reset时。

票数 0
EN

Stack Overflow用户

发布于 2017-11-20 06:19:35

这当然不是测试套件的问题,因为在使用Elixir1.5或更高版本和凤凰1.3时,这个问题很常见。在日志中的某个地方,您可能会发现如下所示:

代码语言:javascript
复制
** (DBConnection.OwnershipError) cannot find ownership process for 
#PID....

尝试运行TEST环境的所有迁移,然后重新运行测试。您可以使用一个命令来完成这个任务:

代码语言:javascript
复制
MIX_ENV=test mix ecto.reset && mix test

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47383448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档