[英]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.