2017-11-13 3 views
2

webappをIExでデバッグできますが、テスト内にブレークポイントを設定することは可能ですか?IExを使用したphoenixテストのデバッグ

たとえば、次のテストでは、connの内部をチェックしたり、他の変数やマクロをチェックしたりしたいと思います。それはと文句を言うように、それはあなたがphoenix.serverがiex -S mix phoenix.server

で実行されているが、この場合にはしている必要がありますWebアプリケーションと連携させるためには

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 

はテストではないWebアプリケーションです。

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

答えて

4

conn構造体(または他の変数)の中身を確認するには、IO.inspect connを使用し、通常のようにmix testでテストを実行します。ここでpryを使う必要はありません。たとえば:

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

はしかし、あなたが本当にシェルが必要な場合は、このようにそれを呼び出すことができます。

iex -S mix test 
2

ExUnitテストは、コードはそれで書かれていると解釈意味.exsファイルです。したがって、ブレークポイントを設定することはできません。

.exsおよび.exファイルの詳細については、あなたは、単に

IO.inspect conn 

を書いて、単純な変数のためにあなたが書くことができます任意のマップを確認したい場合はElixir: When to use .ex and when .exs files

を参照してください

IO.puts variable_name 
関連する問題