我正在尝试使用 Foq 来测试与 Foq 的接口。
到目前为止,我看到的所有例子都比较简单,例如:
let users = [|{ID = 1; pass = true};{ID = 2; pass= false}|]
type IFoo =
abstract member Bar: int -> bool
//tests with Foq
let dataAccess =
Mock<IFoo>()
.Setup(fun x-> <@ x.Bar(users.[0].ID) @>).Returns(users.[0].pass)
.Setup(fun x-> <@ x.Bar(users.[1].ID) @>).Returns(users.[1].pass)
.Create()
示例来自“使用 F# 进行测试 - Mikael Lundin”
我还通过一些谷歌搜索对此进行了研究(此链接很有帮助 - http://trelford.com/blog/post/Foq.aspx)
但是,我要测试的真实接口如下:
type IParameters =
abstract member ParameterDate : int->string->DateTime
type IDataSource =
abstract member MortParameters: IParameters
我尝试了许多不同的方法来测试这些(例如,定义一个带有 int->string 签名的函数,用作设置的输入。或者,将返回值作为 string->DateTime 并将设置作为只是一个整数。
我的问题实际上如下:使用 Foq 测试接口时,如何将测试扩展到具有任何一般长度的函数签名的接口(例如 a->b->c->d->e 等)