2017-03-03 5 views
0

私はコールテストを開始した簡単なプロジェクトを持っています。だから私はした:私のモジュールはどこでElixirミックスアプリケーションに入れられますか?

mix new test 

と私は通常のディレクトリツリーを得た。 libディレクトリには、test.exがあります。しかし、私はtest.exにMystuffというモジュールを使用しますが、コンパイルエラーが発生するためmystuff.exをどこに置くべきかわかりません。ここで

は(テスト/ libディレクトリ内)test.exです:

defmodule Test do 

    use Mystuff 

    @moduledoc """ 
    Documentation for Test. 
    """ 

    @doc """ 
    Hello world. 

    ## Examples 

     iex> Test.hello 
     :world 

    """ 
    def hello do 
    Mystuff.bye() 
    end 
end 

とここで私はまた、テスト/ libに含まれているmystuff.exです。しかしもし

defmodule Test.Mystuff do 
    def bye do 
    IO.puts "bye" 
    end 
end 

私は "iex -S mix"をプロジェクトのホームディレクトリ(test)から実行します。

Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] 

Compiling 3 files (.ex) 

== Compilation error on file lib/test/mystuff.ex == 
** (CompileError) lib/test/mystuff.ex:1: cannot define module Test.Mystuff because it is currently being defined in lib/mystuff.ex:1 
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6 

私は何か間違った名前を付けていますか?何か間違って使っている?何かを間違ったディレクトリに置いていますか?

+0

あなたは 'Test.MyStuff'モジュールを2回定義しています。 'lib/test/mystuff.ex'にもう一度、' lib/mystuff.ex'にもう一度。名前の1つを変更すると、コンパイルする必要があります。 – Sheharyar

+0

重複モジュールを削除した後、['import'、' alias'、 'use'と' require']の違いを知りたいと思っています(http://elixir-lang.org/getting-started /alias-require-and-import.html) –

+0

_Sidenote:_テストは、自動的にコンパイルされないように拡張子が '.exs 'になっていなければなりません。 'ExUnit'テストは、' ExUnit'自身と 'doctest'マクロなしで意味をなさない。 – mudasobwa

答えて

0

use Mystuffalias Test.Mystuffに置き換えます。

関連する問題