小编Rya*_*yan的帖子

将 Foq 与 F# 函数类型结合使用

例如,我使用 F# 类型定义来防止函数之间的硬依赖

type IType1 = int -> int
type IType2 = int-> string

let func1 (i : int) : int = i * i
let func2 (i : int) : string = i |> string

let higherFunc (dep1 : IType1) (dep2 : IType2) (input : int) : string =
    input |> dep1 |> dep2

let curriedFunc = higherFunc func1 func2
let x = curriedFunc 2
Run Code Online (Sandbox Code Playgroud)

输出x:“4”

显然,这是非常人为且简单的,但想象一下依赖项是一个解析器和一个排序器或其他什么。我正在编写的更小的功能颗粒。

我正在尝试使用 Foq 来帮助我的单元测试装置。这是我正确使用 F# 的第一周,我很难尝试弄清楚如何配置这些类型的模拟。

有两件事值得一提:

1 - 如果我使用抽象类,我可以让它工作,但我不想这样做,因为对于完全相同的最终结果来说,这会带来更多麻烦。例如

type IType1 = …
Run Code Online (Sandbox Code Playgroud)

.net f# unit-testing mocking foq

5
推荐指数
1
解决办法
939
查看次数

标签 统计

.net ×1

f# ×1

foq ×1

mocking ×1

unit-testing ×1