gpt4 book ai didi

unit-testing - 在 ExUnit 测试中使用下划线 (_)

转载 作者:行者123 更新时间:2023-12-04 04:25:40 25 4
gpt4 key购买 nike

我的 elixir 应用程序中有一个方法,比如说 Some.Module.func/1 ,返回两个数字的元组。我正在 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

为什么这不起作用,我如何忽略测试中不需要的结果?

最佳答案

当使用 == 时,你不能像这样匹配断言.您可以使用 = 执行以下操作:

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

请注意,顺序已颠倒为 _只能出现在 = 的左侧运算符(operator),否则您将收到 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

这可能适用于您想要对结果执行多个断言的情况。

关于unit-testing - 在 ExUnit 测试中使用下划线 (_),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33320565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com