2015-10-24 5 views
6

私のエリクシールアプリには、2つの数字のタプルを返すSome.Module.func/1と呼ばれるメソッドがあります。 ExUnitでテストを書いていますが、最初の要素をタプルでテストするだけで、2番目の要素は本当に気にしません。ExUnitテストでアンダースコア(_)を使用する

これまでのところ、私はこれをやって試してみた:

test "some method" do 
    assert Some.Module.func(45) == {54, _} 
end 

しかし、テストを実行しているとき、私はちょうどこのエラーを取得する:

Compiled lib/some.ex 
Generated some app 
** (CompileError) test/some_test.exs:7: unbound variable _ 
    (stdlib) lists.erl:1353: :lists.mapfoldl/3 
    (stdlib) lists.erl:1354: :lists.mapfoldl/3 

なぜこの作業ではなく、どのようにすることができます私のテストで不要な結果を無視しますか?

答えて

8

==を使用しているときに、それをassertと一致させることはできません。順序が_として逆転されていることを

test "some method" do 
    assert {54, _} = Some.Module.func(45) 
end 

注意だけそう、あなたは何を得ているされてCompileErrorを受け取ることになります、=演算子の左側に表示されることがあります。あなたは=で、次が行うことができます:

iex(3)> 3 = _ 
** (CompileError) iex:3: unbound variable _ 
    (elixir) src/elixir_translator.erl:17: :elixir_translator.translate/2 

また、行うことができます:あなたはワ状況で動作可能

test "some method" do 
    {result, _} = Some.Module.func(45) 
    assert result == 54 
end 

結果に対して複数のアサーションを実行する。

関連する問題