在 Go 中重新定义常量用于测试
问题大纲:
在 Go 中,常量提供不可变的值,申报后不得更改。然而,当测试依赖于这些常量的代码时,为测试目的注入不同的值变得具有挑战性。
建议的解决方案:
潜在的解决方案在于重构代码以包括第二个函数以基本 URL 作为参数,并以常量值作为参数调用原始函数。
实现细节:
引入辅助函数:
将常量 baseUrl_ 替换为接受基本 URL 作为参数的函数:
<code class="go">func myFuncImpl(baseUrl string) string { // Use `baseUrl` in the function }</code>
修改原始函数:
让原始函数(MyFunc())调用辅助函数:
<code class="go">func MyFunc() string { return myFuncImpl(baseUrl_) }</code>
保留常量:
好处:
示例:
<code class="go">const baseUrl_ = "http://google.com" func MyFunc() string { return myFuncImpl(baseUrl_) }</code>
在测试代码中,可以直接调用 myFuncImpl() 并为其分配自定义值基本网址:
<code class="go">func TestMyFunc(t *testing.T) { result := myFuncImpl("http://example.org") // Assertions and tests }</code>
以上是我们如何测试依赖于常量的 Go 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!