【发布时间】:2015-05-28 13:37:58
【问题描述】:
我正在尝试对调用该结构中其他接收器函数的接收器函数进行单元测试。
假设我想测试 Three() 并在下面模拟对 two() 的调用:
type MyStruct struct {
a string
b string
}
func (m *MyStruct) one() int {
return 2
}
func (m *MyStruct) two() int {
return m.one() * 2
}
func (m *MyStruct) Three() int {
return m.two() * 2
}
我正在遵循以下answer的方法二。
我为每个想要进行单元测试的函数创建了一个自定义构造函数,并用模拟版本覆盖了这些方法。但我想,一旦函数数量增加,代码维护可能并不容易。
是否有任何首选方法来模拟此类函数?我希望官方文档有一些关于如何在不同场景中模拟事物的指南,类似于 Python 上的 mox 提供的。
另外,请注意,我不想使用第三方模拟库。
【问题讨论】:
-
何必呢?我认为每个方法的单元测试绰绰有余。将方法“三”的单元测试想象成一个迷你集成测试。
-
这正是我想要做的。我想模拟所有这些调用,因为我只测试特定函数的功能。功能“三”可以是这里的任何功能。它不一定是综合测试。
-
为什么我不想使用第三方模拟库?
unittest.mock在 python3.2 之前一直是第三方库,在 python2.7 中,您需要始终通过pip安装它。 -
这是另一种带有完整示例的方法,应该清楚地说明如何在 Go 中编写可测试的代码:stackoverflow.com/a/48206430/828366
-
Mock functions in Go的可能重复
标签: unit-testing go mocking