为什么这些看似相同的 Golang 结构不相等?

我正在尝试学习 Golang 测试。


我正在比较 2 个看似相同的结构,但它们并不相等。出了什么问题?


2020/01/22 17:10:10 ****2 cities[0] is type *main.City has &main.City{Name:"Boston", State:"", Country:"USA", Capital:true, Population:685000} 

2020/01/22 17:10:10 ****2 expected  is type *main.City has &main.City{Name:"Boston", State:"", Country:"USA", Capital:true, Population:685000} 

2020/01/22 17:10:11 Preparing to DELETE 5 city docs

--- FAIL: TestCities (3.08s)

    --- FAIL: TestCities/Test_POST_should_add_New_City (0.62s)

        city_handlers_test.go:68: Why is ( cities[0] != expected )Boston was not added to Firestore: 

             got &{Boston  USA true 685000}  

             want &{Boston  USA true 685000}

FAIL

exit status 1

这是测试:


        // why don't these structs match?

        log.Printf("****2 cities[0] is type %T has %#v \n", cities[0], cities[0])

        log.Printf("****2 expected  is type %T has %#v \n", expected, expected)

        // why is this comparison failing when both are the same type with the same values?

        if cities[0] != expected {

            t.Errorf("Why is ( cities[0] != expected )Boston was not added to Firestore: \n got %v  \n want %v", cities[0], expected)

        }


一只甜甜圈
浏览 156回答 1
1回答

catspeake

您比较指针,看起来它们指向不同的对象。为了正确检查,您应该比较对象的字段。这个包可以帮助你做到这一点:reflect.DeepEqual(),testify.EqualValues(),cmp.Equal()示例: https: //play.golang.org/p/09BYFeYj5xx
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go