She*_*yar 6 unit-testing elixir ex-unit
我在elixir应用程序中有一个方法,比方说Some.Module.func/1,它会返回两个数字的元组.我在ExUnit中编写测试,只需要测试元组中的第一个元素,而不是真正关心第二个元素.
到目前为止,我已经尝试过这样做:
test "some method" do
    assert Some.Module.func(45) == {54, _}
end
Run Code Online (Sandbox Code Playgroud)
但是我在运行测试时遇到了这个错误:
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
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用,如何在测试中忽略不需要的结果?
Gaz*_*ler 11
使用时,您无法与断言匹配==.您可以执行以下操作=:
test "some method" do
  assert {54, _} = Some.Module.func(45)
end
Run Code Online (Sandbox Code Playgroud)
请注意,订单已被反转,因为_只能出现在=操作员的左侧,否则您将收到一个CompileError您正在获得的订单:
iex(3)> 3 = _
** (CompileError) iex:3: unbound variable _
    (elixir) src/elixir_translator.erl:17: :elixir_translator.translate/2
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
test "some method" do
  {result, _} = Some.Module.func(45)
  assert result == 54
end
Run Code Online (Sandbox Code Playgroud)
这可能适用于您希望对结果执行多个断言的情况.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           435 次  |  
        
|   最近记录:  |