如果得到,想要:一种编写更好的 Go 测试的简单方法

主要观点:介绍了一种优秀的 Go 测试模式,即使用if got, want :=来编写测试,通过多个例子展示了该模式的工作方式、优点以及与第三方测试库的比较,还提到了该模式的来源及作者即将出版的相关书籍。
关键信息:

  • 普通的 Go 测试写法与新的测试模式对比,如username := GetUser(); if username!= "dummyUser" { t.Errorf("unexpected username: got %s, want: %s", username, "dummyUser") }if got, want := GetUser(), "dummyUser"; got!= want { t.Errorf("username=%s, want=%s", got, want) }
  • 在表驱动测试中该模式效果更好,如在TestParseTwitterHandle函数中的使用。
  • 该模式的工作原理,可在if语句中声明和赋值多个变量,且这些变量仅在if语句内有效。
  • 该模式的优点,训练眼睛快速找到测试断言中的重要信息,容易复制粘贴,能区分测试断言和测试逻辑。
  • 与第三方测试库对比,作者更倾向于 Go 的标准测试库,因其简约和明确,减少了依赖和抽象层可能引入的错误。
  • 该模式源自Litestream作者Ben Johnson,其从 Go 标准库的偶尔使用中学习而来。
    重要细节:
  • 在测试中使用if got, want :=模式可使代码更清晰,避免歧义,如在测试用户相关功能时。
  • 该模式能防止复制粘贴测试断言时忘记更新错误消息的错误。
  • 作者即将出版一本关于有效写作技巧的书,包括软件教程、博客写作、电子邮件等方面,可预购。

总结:介绍了一种高效的 Go 测试模式及其优势,强调了 Go 标准测试库的价值,并宣传了作者的新书。

阅读 3
0 条评论