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
私は何か間違った名前を付けていますか?何か間違って使っている?何かを間違ったディレクトリに置いていますか?
あなたは 'Test.MyStuff'モジュールを2回定義しています。 'lib/test/mystuff.ex'にもう一度、' lib/mystuff.ex'にもう一度。名前の1つを変更すると、コンパイルする必要があります。 – Sheharyar
重複モジュールを削除した後、['import'、' alias'、 'use'と' require']の違いを知りたいと思っています(http://elixir-lang.org/getting-started /alias-require-and-import.html) –
_Sidenote:_テストは、自動的にコンパイルされないように拡張子が '.exs 'になっていなければなりません。 'ExUnit'テストは、' ExUnit'自身と 'doctest'マクロなしで意味をなさない。 – mudasobwa