1 回答
TA贡献1783条经验 获得超4个赞
如果您的代码使用 const 值,则它不适合测试(关于使用该参数的不同值进行测试)。
您可以通过轻微的重构来解决您的问题。假设您有一个使用此常量的函数:
const baseUrl = "http://google.com"
func MyFunc() string {
// use baseUrl
}
您可以创建另一个将基本 URL 作为参数的函数,并且您的原始函数MyFunc()调用它:
const baseUrl_ = "http://google.com"
func MyFunc() string {
// Call other function passing the const value
return myFuncImpl(baseUrl_)
}
func myFuncImpl(baseUrl string) string {
// use baseUrl
// Same implementation that was in your original MyFunc() function
}
这样你的库的 API 不会改变,但现在你可以MyFunc()通过 testing 来测试你原来的功能myFuncImpl(),你可以传递任何值来测试。
调用MyFunc()将保持安全,因为它总是将 const 传递baseUrl_到myFuncImpl()实现现在所在的位置。是否myFuncImpl()导出此新函数由您决定;它可能保持未导出状态,因为测试代码可能(应该)放在同一个包中并且可以毫无问题地调用它。
- 1 回答
- 0 关注
- 172 浏览
添加回答
举报