[英]Doctesting a function that returns different map during every run
假设我的函数返回了一个映射,某些值可能是随机生成的。 我希望至少能够再次测试输出类型,或者换句话说-从doctest级别检查天气返回的值是否是地图。 最终它是否包含特定的键。 可能吗? 该函数调用可能如下所示:
iex> MyApp.function(params, opts)
%{_}
输出不能是模式,但是可以使用is_map
或match?
格式为%{}
宏,如果该值为地图,则两者都将返回true
。
iex> is_map MyApp.function(params, opts)
true
iex> match? %{}, MyApp.function(params, opts)
true
尽管@Dogbert的回答是完全正确的,但并非在所有情况下都可以使用它。 当需要预先检查一个不可预测的值(例如,随机生成)时,仍然可以使用ExUnit
。
每次测试套件运行都将随机种子值打印出来,作为测试运行的最后一行:
Randomized with seed 486290
它可能会被记录并传递回ExUnit.configure/1
。 在这种情况下,从函数返回的随机值将是相同的(在不同的运行之间不会改变)。
当然,此技巧不适用于从第三方服务接收的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.