testing - 使用 IEx 调试 phoenix 测试

标签 testing elixir phoenix-framework

我知道您可以使用 IEx 调试 webapp,但是是否可以在测试中设置断点?

例如,在下面的测试中,我想检查 conn 中的内容或检查任何其他变量或宏。

defmodule HelloWeb.PageControllerTest do
  use HelloWeb.ConnCase
  require IEx
  test "GET /", %{conn: conn} do
    IEx.pry
    conn = get conn, "/"
    assert html_response(conn, 200) =~ "Welcome to Phoenix!"
  end
end

为了让它与 webapp 一起工作,你必须让 phoenix.server 运行 iex -S mix phoenix.server

但在这种情况下是一个测试而不是 webapp 所以它提示:

Cannot pry #PID<0.406.0> at ... Is an IEx shell running?

最佳答案

要检查 conn 结构(或任何其他变量)中的内容,您只需使用 IO.inspect conn 并像往常一样使用 mix test 运行测试 - 没有这里需要用到pry。例如:

defmodule HelloWeb.PageControllerTest do
  use HelloWeb.ConnCase
  test "GET /", %{conn: conn} do
    IO.inspect conn, limit: :infinity
    conn = get conn, "/"
    assert html_response(conn, 200) =~ "Welcome to Phoenix!"
  end
end

但是,如果你真的需要一个 shell,你可以这样调用它:

iex -S mix test 

关于testing - 使用 IEx 调试 phoenix 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47262653/

相关文章:

elixir - 监督 gen_tcp 客户端/服务器

testing - Chrome DevTools > Service Workers > Testing > Local dev environment serves via http on a LAN

java - 在解析上下文之外以编程方式访问 ANTLr 语法规则字符串文字

postgresql - Travis CI 忽略 Postgres 版本规范

elixir - Phoenix 不呈现关联

elixir - 插入时预加载 Ecto 关联

java - 用 mockito 模拟 Unirest

ruby-on-rails - 你应该测试 Rails 应用程序使用的 gem 吗?如果是这样,你如何?

elixir - 从 version1.3 开始有没有更好的方法用 Elixir 编写条件结构

string - Elixir 只大写一个单词的第一个字母