对于测试的特殊情况String.contains?
,您可以考虑使用正则表达式匹配运算符=~
,因为它会报告更好的测试失败消息。
不过一般来说,ExUnitassert
不会知道标准库中每个函数的内部语义。这就是您可以提供自定义错误消息的原因:
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
下面是表达式assert
,refute
将在 Elixir 1.3 中识别和定制输出:
=
匹配运算符
match?/2
功能
!
否定
==
等式运算符
<
少于
>
比...更棒
<=
小于或等于
>=
大于或等于
===
严格相等(区分浮点数和整数)
=~
正则表达式匹配运算符
!==
严格不等式
!=
不等式
in
可枚举的成员
其中大多数都得到相同的特殊处理:它们是中缀运算符,assert
并将报告它看到的lhs
,值。rhs