gpt4 book ai didi

Elixir:测试失败消息

转载 作者:行者123 更新时间:2023-12-05 00:41:11 26 4
gpt4 key购买 nike

使用 Elixir 的 ExUnit 进行单元测试,每个人似乎都对测试失败消息感到兴奋。但是,如果我正在测试 == 以外的任何内容,我似乎无法获得有用的错误消息。

例如

assert String.contains(my_string, "expected string")

Expected truthy, got false

我更喜欢编写我的测试,以便我的失败能够提供更多信息,让我能够快速迭代他们提供的反馈。有没有办法获得更多信息的测试失败?例如

Expected "an unexpected string" to contain "expected string"

最佳答案

针对 String.contains? 进行测试的特殊情况,您可以考虑正则表达式匹配运算符 =~ ,因为它会立即报告更好的测试失败消息。

一般来说,ExUnit 的 assert不会知道标准库中每个函数的内部语义。这就是您可以提供自定义错误消息的原因:

assert String.contains?(my_string, "expected string"),
~s(Expected #{inspect my_string} to contain "expected string")

如果您有许多 String.contains?/2 的断言,您可以定义自己的断言:

def assert_contains(string, substring) do
assert String.contains?(string, substring),
"Expected #{inspect string} to contain #{inspect substring}"
end

test "my string" do
assert_contains my_string, "expected string"
end

这里是表达式 assertrefute将识别并定制 Elixir 1.3 中的输出:

  • =匹配运算符
  • match?/2功能
  • !否定
  • ==等式运算符
  • <小于
  • >大于
  • <=小于或等于
  • >=大于或等于
  • ===严格相等(区分 float 和整数)
  • =~正则表达式匹配运算符
  • !==严格不等式
  • !=不平等
  • in可枚举成员

其中大多数都得到相同的特殊处理:它们是中缀运算符,而 assert将报告 lhs , rhs它看到的值。

关于Elixir:测试失败消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049534/

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