【发布时间】:2016-08-09 21:20:55
【问题描述】:
我正在为我的代码开发一些测试(使用 testing 包),我想知道在测试函数中模拟函数的最佳方法是什么:
我应该将函数作为参数传递吗? 在这种情况下,如果该函数调用另一个函数怎么办?我应该将第一个和第二个函数都作为参数传递给被测函数吗?
注意:一些函数在对象上调用(即 someObj.Create())并使用 HTTP API 调用。
更新澄清:
示例:函数
func f1() error {
... //some API call
}
func (s *SomeStruct) f2() error {
return f1
}
func f3() error {
return nil
}
func f4() error {
...
err = obj.f2()
...
err = f3()
...
}
对于以上内容:如果我想测试 f4,模拟 f2 和 f3 的最佳方法是什么?
如果我将 f2 和 f3 作为参数传递给 f4,它会起作用,但是 f2 测试呢?我应该将 f1 传递给 f2 作为参数吗?
如果是这样,那么 f4 是否应该在参数中也包含 f1 ?
【问题讨论】:
-
当你在测试函数中说模拟函数时,你的意思是什么?
-
用一个例子更新了问题。我希望它更清楚。我对测试很陌生,我什至不能 100% 确定如何提问
-
你需要澄清更多。这些功能是否在您正在测试的包中?
-
f1和f2不在被测包中,f3在(但实际代码中f2在被测包内的另一个函数中调用,所以多了一层)