golang测试断言函数的 nil返回失败

我试图断言一个返回 nil 的函数,但我试图断言 nil,但下面的断言没有意义。我使用github.com/stretchr/testify/assert框架断言

我试图断言一个返回 nil 的函数,但我试图断言 nil,但的断言没有意义。我使用github.com/stretchr/testify/assert框架断言

p:assert.Equal(t,meta == nil,true) fails:assert.Equal(t,meta,nil)

我不知道为什么这有什么意义。有人可以帮忙吗?

正在测试的方法:

type Metadata struct {
    UserId          string
}
func GetAndValidateMetadata(metadata map[string]string) (*Metadata, error) {
    userId _ := metadata["userId"]
    if userId == "" {
        return nil, errors.New("userId is undefined")
    }
    meta := Metadata{
        UserId:          userId,
    
    }
    return &meta, nil
}

测试用例:

func TestValidation(t *testing.T) {
    metadata := map[string]string{
        "fakeUserId": "testUserId",
    }
    meta, err := GetAndValidateMetadata(metadata)
 assert.Equal(t, meta == nil, true) <--- p
 assert.Equal(t, meta, nil) <--- fails
}
4

Go 中的接口值存储类型和该类型的值。

equal 方法接受 intece {} 参数,因此在第二个断言中,您将包含类型信息 (* Metadata) 和 nil 值的接口值与没有类型信息和 nil 值的接口进行比较。

您可以强制第二个接口也包含这样的类型:

assert.Equal(t, meta, (*Metadata)(nil))

另请参阅常见问题中的"Why is my nil error value not equal to nil?"

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(641)
你可以使用生成器函数做什么 (generator function python)
上一篇
我可以从Google地图自动填写中获得唯一的迪拜城市地址吗
下一篇

相关推荐

  • golang 服务器:如何使用Golang构建高性能的Web服务

    Golang 服务器是一种高性能、可扩展的服务器,它使用 Google 开发的 Go 语言来构建 Web 应用程序和 API。它具有快速开发、高效运行、安全可靠等特点,可以帮助开发者更快地构建和部署应用程序。…

    2023-03-04 12:39:15
    0 77 48
  • Rg s s 3 a:带有 *s3.S3对象的 Golang单元测试

    关于Rg s s 3 a的问题,在golang unit test example中经常遇到,我应该如何单元测试下面的代码。我试图使用 coutnerfiter 来伪造输入“* s3.S3”对象,但它不适合我。我是 coutnerfiter 和 Go 的新手,有人可以帮我吗?…

    2022-12-14 05:21:51
    0 11 13
  • 在 golang中定义一种新的时间类型

    我想有一个这样的结构:…

    2022-11-11 15:11:44
    0 29 70
  • javaapi文档:java.lang.String类

    Java API文档是一种文档,它提供了关于Java类库的详细信息,包括类、接口、方法和字段的定义以及它们之间的关系。它还提供了有关如何使用特定类或接口的示例代码,以及它们的功能和用法。…

    2023-02-18 14:13:40
    0 93 72
  • Copycheck查重:golang的copyCheck.check如何检测对象复制

    关于Copycheck查重的问题,在copying checker中经常遇到,golang 的copyCheck.check如何检测对象复制?…

    2022-11-28 05:08:31
    0 13 97
  • Int类型最大值:Go中 int类型的最大值(golang max int)

    关于Int类型最大值的问题,在golang max int中经常遇到,如何为unsigned整数类型指定可表示的最大值?…

    2022-12-20 05:05:20
    0 23 11
  • 66you网页游戏平台:GolangDataRace 退出状态为66

    关于66you网页游戏平台的问题,在exit 66中经常遇到,我有以下代码,并且我有数据竞赛 Round 函数定期检查运行该函数以删除地图的内容正如我在这里所读:Is it safe to remove selected keys from Golang map within a range loop?…

    2022-12-22 10:56:23
    0 79 56

发表评论

登录 后才能评论

评论列表(58条)