在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