2016-02-11 4 views
8

私はfauxブログのphoenix appで作成した受け入れテストのグループを持っています。それらの間にいくつかの重複したロジックがあります。私はヘルパーモジュールに移動してDRYを維持したいと思います。ここでPhoenixのElixirヘルパーモジュールを作成して使用する

は、ディレクトリ構造である:私は重複受け入れテストロジックを固執したいのですがどこ

test/acceptance/post 
├── create_test.exs 
├── delete_test.exs 
├── helpers.exs 
├── index_test.exs 
└── update_test.exs 

helpers.exsファイルです。 、

私のテストファイルのいずれかで、その後
defmodule Blog.Acceptance.Post.Helpers do 
    def navigate_to_posts_index_page do 
    # some code 
    end 
end 

index_test.exsを言って、私が使用するヘルパーモジュールをインポートしたいのですが、それは方法です:それは次のように見えますが、私は取得しています

defmodule Blog.Acceptance.Post.IndexTest do 
    import Blog.Acceptance.Post.Helpers 
end 

このエラー:

** (CompileError) test/acceptance/post/index_test.exs:7: module Blog.Acceptance.Post.Helpers is not loaded and could not be found

テストファイルでヘルパーモジュールにアクセスする方法、またはロードする方法を教えてください。

答えて

17

ヘルパーモジュールを利用できるようにするには、Code.require_fileを使用してロードする必要があります。しかし、この場合、phoenixはtest/support.exファイルをこのような場合のプロジェクトに正確にコンパイルするようにプロジェクトを設定しました。したがって、モジュールをtest/support/test_helpers.exに配置すると、そのモジュールはプロジェクトと一緒にコンパイルされ、Code.require_fileにならずにすべてのテストファイルで使用できます。

+0

ありがとう、クリス!魅力のように動作します。 ;)私はこの場合、Code.require_fileのアプローチが好きです。ヘルパーファイルを同じディレクトリに保存できるからです。しかし、リソース間で共有されているロジックを特定することができれば、test/support/test_helpers.exのアプローチは素晴らしい解決策になります。 –

関連する問題