首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有功能的Golang测试

具有功能的Golang测试
EN

Stack Overflow用户
提问于 2017-09-15 18:30:16
回答 1查看 259关注 0票数 0

我使用的是第三方库,它是一些C函数的包装器。不幸的是,几乎所有的Go函数都是免费的(它们没有接收器,它们不是方法);不是我会采用的设计方法,但这就是我所拥有的。

使用Go的标准“测试”库:

是否有一种解决方案可以让我创建可以模拟函数的测试?

或者是将库封装到结构和接口中的解决方案,然后模拟接口以实现我的目标?

我创建了一个monte模拟,它也处理生成的数据集。我的评估算法之一是寻找特定的模型,然后通过第三方函数进行评估。我知道我的边缘情况,知道呼叫计数应该是什么,这是我想要测试的。

也许一个简单的计数器就够了?

其他使用这个库的项目,我已经发现,没有完全覆盖或根本没有测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 19:58:13

您可以在需要调用它时使用对实际函数的引用来实现这一点。

然后,当需要模拟函数时,只需将引用指向模拟实现。

假设这是您的外部功能:

代码语言:javascript
复制
// this is the wrapper for an external function
func externalFunction(i int) int {
   return i * 10  // do something with input
}

您从不直接调用它,而是声明对它的引用:

代码语言:javascript
复制
var processInt func(int) int = externalFunction

当您需要调用函数时,可以使用以下引用进行调用:

代码语言:javascript
复制
fmt.Println(processInt(5))

然后,您想要模拟只为该引用指定一个模拟实现的函数:

代码语言:javascript
复制
processInt = mockFunction

这个操场把它组合在一起,也许比解释更清楚:

https://play.golang.org/p/xBuriFHlm9

如果您有一个接收func(int) int的函数,那么当您希望它使用模拟实现时,可以发送实际的externalFunctionmockFunction

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46245549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档