gpt4 book ai didi

使用指针引用去测试函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:36 26 4
gpt4 key购买 nike

我正在对一个 Go 项目进行单元测试,我是 Go 的新手。所以首先我想测试一些简单的东西。我从这个函数开始:

func (this *Service) InList(idPerson string, personsId []string) bool {
for _, personsId := range personsId {
if id == idPerson {
return true
}
}

return false
}

服务是定义在类之上的结构。

这是我写的测试:

func TestValidatePersonID(t *testing.T) {
personID := "12345"

personIDs := []string{"12345", "123456t", "1234567a"}

ok := *Service.InList(personID, personIDs)

if !ok {
t.Errorf("Id %v not found", personID)
}
}

如果我尝试在没有 * 的情况下调用服务,我会收到错误消息:

invalid method expresion (needs pointer reciever)

如果我尝试调用函数 (*Service).inList,它说我缺少参数。如果有人能指出我做错了什么以及我如何在测试中获得该服务的指针接收器,我是 Go 的新手?我会很感激。

最佳答案

method expression 的正确语法是:

ok := (*Service).InList(nil, personID, personIDs)

此代码段将 nil 添加为接收方参数并使用括号正确指定类型。

问题中使用的方法不是惯用的。要么在一个值上调用一个方法

s := Service{}
ok := s.InList(personID, personIDs)

或将方法转换为函数。

关于使用指针引用去测试函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50685339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com