簡體   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