【发布时间】:2019-01-23 22:30:03
【问题描述】:
我正在开发一个基于 Elixir 和 Phoenix 的应用程序,它还使用 Wallaby 应用程序在无头 Chrome 浏览器中进行基于 HTTP 的测试。
最近我在执行我的 ExUnit 测试时收到一个相当笨拙的错误消息:
** (MatchError) no match of right hand side value:
{:error, {:wallaby, {:bad_return,
{{Wallaby, :start, [:normal, []]},
{:EXIT,
{%Protocol.UndefinedError{description: "", protocol: Enumerable, value: nil},
[{Enumerable, :impl_for!, 1, [file: '/root/deb/elixir_1.8.0-1/lib/elixir/lib/enum.ex', line: 1]},
{Enumerable, :slice, 1, [file: '/root/deb/elixir_1.8.0-1/lib/elixir/lib/enum.ex', line: 193]},
{Enum, :backwards_compatible_slice, 1, [file: 'lib/enum.ex', line: 2871]},
{Enum, :slice_any, 3, [file: 'lib/enum.ex', line: 3075]},
{Enum, :at, 3, [file: 'lib/enum.ex', line: 381]},
{Wallaby.Experimental.Chrome, :validate, 0, [file: 'lib/wallaby/experimental/chrome.ex', line: 36]},
{Wallaby, :start, 2, [file: 'lib/wallaby.ex', line: 27]},
{:application_master, :start_it_old, 4, [file: 'application_master.erl', line: 277]}]}}}}}}
test/test_helper.exs:4: (file)
(elixir) lib/code.ex:767: Code.require_file/2
(elixir) lib/enum.ex:769: Enum."-each/2-lists^foreach/1-0-"/2
(elixir) lib/enum.ex:769: Enum.each/2
我正在运行 Debian GNU/Linux 9 “Stretch”,并将 Elixir 安装为 .deb 软件包,版本为 1.8.0-1,来自 binaries.erlang-solutions.com。小袋鼠被锁定到{:wallaby, "~> 0.21.0"}。
我们将不胜感激有关如何解决此问题的想法。
【问题讨论】:
-
v0.21.0是 Wallaby 的最新版本,在chrome.ex:36中有不同的代码。从更新Wallaby开始。 -
很遗憾,我已经在运行
{:wallaby, "~> 0.21.0"}。 -
啊,确实,我看错了代码。那么唯一的选择就是克隆、调试、修复和提供 PR。或者回滚到 Elixir 1.7 :)
-
我现在降级了 Elixir,发现 Elixir 1.7.4 仍然存在错误。所以它不像以前怀疑的那样是 Elixir 1.8 的问题。
标签: debian elixir google-chrome-headless ex-unit wallaby