繁体   English   中英

对一个在每次运行期间返回不同映射的函数进行文档测试

[英]Doctesting a function that returns different map during every run

假设我的函数返回了一个映射,某些值可能是随机生成的。 我希望至少能够再次测试输出类型,或者换句话说-从doctest级别检查天气返回的值是否是地图。 最终它是否包含特定的键。 可能吗? 该函数调用可能如下所示:

iex> MyApp.function(params, opts)
%{_}

输出不能是模式,但是可以使用is_mapmatch? 格式为%{}宏,如果该值为地图,则两者都将返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM