首页  >  文章  >  后端开发  >  我们如何测试依赖于常量的 Go 函数?

我们如何测试依赖于常量的 Go 函数?

Susan Sarandon
Susan Sarandon原创
2024-11-01 14:25:29141浏览

How Can We Test Go Functions Dependent on Constants?

在 Go 中重新定义常量用于测试

问题大纲:
在 Go 中,常量提供不可变的值,申报后不得更改。然而,当测试依赖于这些常量的代码时,为测试目的注入不同的值变得具有挑战性。

建议的解决方案:
潜在的解决方案在于重构代码以包括第二个函数以基本 URL 作为参数,并以常量值作为参数调用原始函数。

实现细节:

  1. 引入辅助函数:

    • 将常量 baseUrl_ 替换为接受基本 URL 作为参数的函数:

      <code class="go">func myFuncImpl(baseUrl string) string {
        // Use `baseUrl` in the function
      }</code>
  2. 修改原始函数:

    • 让原始函数(MyFunc())调用辅助函数:

      <code class="go">func MyFunc() string {
        return myFuncImpl(baseUrl_)
      }</code>
  3. 保留常量:

    • 将常量 baseUrl_ 作为 MyFunc 中的参考点( ) 函数,确保在生产代码中使用预期的常量值。

好处:

  • 保持原来的API 并避免生产代码中的潜在漏洞。
  • 无需修改常量即可使用不同值测试 MyFunc() 函数。
  • 测试可以访问专用函数 (myFuncImpl())允许在测试期间灵活赋值。

示例:

<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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn