gpt4 book ai didi

f# - NSubstitute 和 FSharp - 模拟 FSharp 函数

转载 作者:行者123 更新时间:2023-12-01 01:11:42 25 4
gpt4 key购买 nike

给定一个具有 FSharp 样式函数的接口(interface)。

type IUseless =
abstract member Listify: string -> int -> string list

你会如何模拟这个函数?

let substitute = NSubstitute.Substitute.For<IUseless>()
substitute.Listify.Returns(??? what would even go here ???)

我不希望能够像普通方法或包含函数的值一样模拟它(尽管这就是它所代表的意思)。

所以我很好奇是否有人使用典型的 .NET 模拟库成功地模拟了 FSharp 函数。

最佳答案

首先:是的,你完全可以像普通方法一样模拟它:

let substitute = NSubstitute.Substitute.For<IUseless>()
(substitute.Listify "abc" 5).Returns ["whatevs"]

这是可行的,因为 F# 像普通 .NET 方法一样编译此定义,尽管使用柯里化(Currying)语法。这样做部分是为了互操作,部分是为了性能。

但其次:如果我是你,我宁愿完全跳过整个 NSubstitute 业务,而是使用内联接口(interface)实现:

let substitute = { new IUseless with member x.Listify a b = ["whatevs"] }

这更干净,类型检查更好,并且运行时速度更快。

关于f# - NSubstitute 和 FSharp - 模拟 FSharp 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43579919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com