gpt4 book ai didi

dependency-injection - F# 中用于验收测试的模拟函数

转载 作者:行者123 更新时间:2023-12-04 08:23:58 25 4
gpt4 key购买 nike

我有一个生成随机数的函数。在进行验收测试时,我想将其替换为生成已知数字的一个。

在面向对象的语言中,我会使用依赖注入(inject),并在测试设置中以不同方式简单地连接这个组件。我能看到用函数式语言做到这一点的唯一方法是通过程序传递依赖关系,从根开始,直到它到达需要它的函数(这里的“海龟一直向下”是正确的短语吗?) .

有没有更好的办法?

最佳答案

有很多选择——您可以传递函数,可以使用依赖注入(inject)机制(许多标准 .NET 库都可以在 F# 中工作,但您也可以找到一些特定于 F# 的轻量级工具),或者您甚至可以使用 monad 隐式传递状态。

但是,您是否需要在运行时在生产测试 设置之间做出选择?如果不是,您可以将您想要以不同方式实现以进行测试的功能移动到一个单独的文件中,并为您的项目创建两个不同的版本。

这可能不是纯粹的解决方案,但它非常简单(只需使用 Random.Test.fs 而不是 Random.Runtime.fs)并且非常好功能性 - 您只需提供单个(或多个)功能的不同实现,其余代码使用它们。

关于dependency-injection - F# 中用于验收测试的模拟函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11229480/

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