在F#中,我想對具有多個嵌套函數級別的函數執行單元測試。 我希望能夠單獨測試嵌套函數,但我不知道如何調用它們。 調試時,這些嵌套函數中的每一個函數都是作爲函數對象的一種類型被調用的,但我不知道我是否可以在編譯時訪問它們。我可以調用嵌套函數進行單元測試嗎?
我不想改變我正在使用的嵌套方案,因爲它在功能上最有意義使它們以這種方式嵌套,因爲在每個嵌套級別上都有一些事實上的「繼承」某些函數參數。
是這樣的可能嗎?如果不是,單元測試嵌套函數的一般過程是什麼?他們是否使用額外的參數進行單獨測試,然後插入其嵌套位置,以避免再次進行測試?
非常小例子:
let range a b =
let lower = ceil a |> int
let upper = floor b |> int
if lower > upper then
Seq.empty
else
seq{ for i in lower..upper -> i}
我怎麼能測試lower
或upper
是在不改變代碼的嵌套性質正常工作?
+1不可能的,但我很好奇,看看所建議的解決方法。 : - ] – ildjarn
如果'range'正常工作,你不能假設'lower'和'upper'做得好嗎? – Daniel
@丹尼爾,這是一個簡單的例子。實際上,這並不是一個很好的方法,因爲低級和高級不會真正綁定到函數中。但是,更復雜的例子呢,嵌套的幫助函數本身可能相當複雜,因此應該從整個包含函數中進行測試。 – mattgately