2015-10-24 21 views
6

Benim iksir uygulamasında bir yöntem var, yani Some.Module.func/1 diyelim ki, iki sayıdan oluşan bir tuple döndürüyor. ExUnit'te testler yazıyorum ve sadece ilk unsuru tuple test etmeli ve ikincisini umursamıyorum.ExUnit testlerinde alt çizgi (_) kullanın

Şimdiye kadar, bunu yaparken denedim:

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

Ama testini çalıştırırken Sadece bu hatayı alıyorum:

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 

bu çalışma değildir Neden ve Nasıl verebilirim Testlerimde gereksiz sonuçları görmezden gelmek mi?

cevap

8

=='u kullanırken bu gibi biriyle eşleşemezsiniz. Sen = ile aşağıdakileri yapabilirsiniz: sipariş sadece = operatörün sol tarafta görünebilir _ olarak tersine döndüğü

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

Not aksi takdirde bir CompileError alacaksınız..END_FONT alıyorsanız budur :

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

Ayrıca yapabilirsiniz: Eğer wa durumlarda işe yarayabilir

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

Sonuçta çoklu değerlendirme yapmak için nt.