草庐IT

test_slice

全部标签

unit-testing - 使用简单的 http 处理程序测试所有路径

我正试图在这个简单的http处理程序文件上获得100%的代码覆盖率。如果成功,该文件将写入默认响应header,然后返回200和我在下面测试过的“Pong”。但是,也有可能写入默认header会产生错误,在这种情况下,预期会出现带有内部错误正文的500响应。我正在努力弄清楚如何在测试中触发500响应案例。如果出于某种原因将writeDefaultHeaders函数调用的第二个参数更改为“html”,则该案例将失败,因为html不是我的服务中受支持的响应内容类型。在代码中模拟此调用/命中此错误分支的惯用方法是什么?谢谢。ping_handler_test.gopackagemainimp

Go:在结构中声明一个 slice ?

我有以下代码:typeroomstruct{widthfloat32lengthfloat32}typehousestruct{s:=make([]string,3)namestringroomSzSlice:=make([]room,3)}funcmain(){}当我尝试构建和运行它时,出现以下错误:c:\go\src\test\main.go:10:syntaxerror:unexpected:=c:\go\src\test\main.go:11:non-declarationstatementoutsidefunctionbodyc:\go\src\test\main.go:12

Go:在结构中声明一个 slice ?

我有以下代码:typeroomstruct{widthfloat32lengthfloat32}typehousestruct{s:=make([]string,3)namestringroomSzSlice:=make([]room,3)}funcmain(){}当我尝试构建和运行它时,出现以下错误:c:\go\src\test\main.go:10:syntaxerror:unexpected:=c:\go\src\test\main.go:11:non-declarationstatementoutsidefunctionbodyc:\go\src\test\main.go:12

testing - 扩展现有的类型测试。T 以添加额外的检查

我意识到我可以将testing.T类型传递给需要处理测试接口(interface)的函数。但是如何扩展结构并使用它呢?我知道我可以输入extend但不幸的是这不起作用:packagetestimport"testing"typetestingTtesting.Tfunc(t*testingT)assert(valint){ifval==0{t.Errorf("%diszero",val)}}funcTestSomething(t*testingT){t.assert(0)} 最佳答案 一种解决方案是嵌入,如您在eduncan911的

testing - 扩展现有的类型测试。T 以添加额外的检查

我意识到我可以将testing.T类型传递给需要处理测试接口(interface)的函数。但是如何扩展结构并使用它呢?我知道我可以输入extend但不幸的是这不起作用:packagetestimport"testing"typetestingTtesting.Tfunc(t*testingT)assert(valint){ifval==0{t.Errorf("%diszero",val)}}funcTestSomething(t*testingT){t.assert(0)} 最佳答案 一种解决方案是嵌入,如您在eduncan911的

testing - Golang 测试模拟函数最佳实践

我正在为我的代码开发一些测试(使用testing包),我想知道在测试函数中模拟函数的最佳方法是什么:我应该将函数作为参数传递吗?在那种情况下,如果该函数调用另一个函数怎么办?我是否应该将第一个和第二个函数都作为参数传递给测试函数?注意:一些函数是在对象上调用的(即someObj.Create())并使用HTTPAPI调用。更新说明:例子:函数funcf1()error{...//someAPIcall}func(s*SomeStruct)f2()error{returnf1}funcf3()error{returnnil}funcf4()error{...err=obj.f2()...

testing - Golang 测试模拟函数最佳实践

我正在为我的代码开发一些测试(使用testing包),我想知道在测试函数中模拟函数的最佳方法是什么:我应该将函数作为参数传递吗?在那种情况下,如果该函数调用另一个函数怎么办?我是否应该将第一个和第二个函数都作为参数传递给测试函数?注意:一些函数是在对象上调用的(即someObj.Create())并使用HTTPAPI调用。更新说明:例子:函数funcf1()error{...//someAPIcall}func(s*SomeStruct)f2()error{returnf1}funcf3()error{returnnil}funcf4()error{...err=obj.f2()...

go - 如何使用 Sscanf 扫描十六进制字符串的子 slice ?

我有一个解析函数,它将用以字符串格式给出的数据填充字节数组。funcParse(datastring)([]byte,error){bs:=make([]byte,6)//Createsubslicesoverlargerslicea:=bs[0:2]b:=bs[2:4]c:=bs[4:6]//Attempttoscaneachstringvalueintotheirrespectiveslices_,err:=fmt.Sscanf(data,"%4x-%4x-%4x",&a,&b,&c)returnbs,err}在GoPlayground上评估此功能返回字节数组的空值。funcmai

go - 如何使用 Sscanf 扫描十六进制字符串的子 slice ?

我有一个解析函数,它将用以字符串格式给出的数据填充字节数组。funcParse(datastring)([]byte,error){bs:=make([]byte,6)//Createsubslicesoverlargerslicea:=bs[0:2]b:=bs[2:4]c:=bs[4:6]//Attempttoscaneachstringvalueintotheirrespectiveslices_,err:=fmt.Sscanf(data,"%4x-%4x-%4x",&a,&b,&c)returnbs,err}在GoPlayground上评估此功能返回字节数组的空值。funcmai

go - 在几个不同的 goroutine 之间共享一个 slice

鉴于我有一片User类型的结构Users:=make([]User)我正在监听TCP连接,当用户连接时,我将向此slice添加一个新用户。我这样做的方法是设置一个NewUserschannel​​NewUsers:=make(chanUser)在新的TCP连接时,一个User被发送到这个channel,一个中央函数等待一个User到达以将其添加到Usersslice。但现在我想要多个子系统(包/功能)使用这个用户列表。一个功能可能只想接收用户列表,而另一个功能可能想要向每个用户广播消息,或者只向符合特定条件的用户广播消息。多个函数(可能从不同的goroutines执行)如何安全地访问用