1, "bar" => 2, "baz" => 3, } Enum-6ren">
gpt4 book ai didi

elixir - 是否可以在 Enum.each 中有 ExUnit.test 语句

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

我正在尝试做这样的事情,而不必手动编写一系列 test block :

test_cases = %{
"foo" => 1,
"bar" => 2,
"baz" => 3,
}

Enum.each(test_cases, fn({input, expected_output}) ->
test "for #{input}" do
assert(Mymodule.myfunction input) == expected_output
end
end)

但是在运行此代码时,我收到错误 undefined function input/0上线 assert(Mymodule.myfunction input) == expected_output .

有没有办法实现我想要的?

最佳答案

是的,有可能,您只需要 unquote两个inputexpected_output里面do传递给 test/2 的 block .

test_cases = %{
"foo" => 1,
"bar" => 2,
"baz" => 3,
}

Enum.each test_cases, fn({input, expected_output}) ->
test "for #{input}" do
assert Mymodule.myfunction(unquote(input)) == unquote(expected_output)
end
end

顺便说一句,您在 assert 中有一个括号错误。您调用的电话 assert/1只需 Mymodule.myfunction input作为它的论点,而不是 Mymodule.myfunction(input) == expected_output (这是您要断言的表达式)。

关于elixir - 是否可以在 Enum.each 中有 ExUnit.test 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011573/

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