草庐IT

test_slice

全部标签

Golang 排序接口(interface) slice

我用Golang编写了一个CLI工具来包装API,我喜欢它的组合如此简单。现在我想合并另一个具有不同JSON结构的API来获得相似的值。我为要实现的结构创建了一个接口(interface),但我不太了解类型转换在Golang中的工作原理。这是我整理的一个例子:我有一个公开了一些方法的公共(public)接口(interface)VehicletypeVehicleinterface{Manufacturer()stringModel()stringYear()intColor()stringString()string}我还想对实现此接口(interface)的所有结构进行排序,因此我

unit-testing - 在 golang 模拟依赖项中对 http 处理程序进行单元测试

目前,我正在尝试建立单元测试go处理程序的最佳实践。我需要模拟依赖项,但因此我必须能够访问/模拟这些依赖项。有一些我不想考虑的解决方案,例如全局变量/应用程序状态。或者将所有处理程序作为包含依赖项成员变量的结构的函数。我对通过以下方式注入(inject)处理程序所需的依赖项的解决方案感到满意:funchelloHandler(db*DbService)http.HandlerFunc{returnfunc(whttp.ResponseWriter,r*httpRequest){//handlercodegoeshere}}然后我可以为路由提供这个处理程序:http.HandleFunc

unit-testing - 如何模拟函数以在golang中获得不同的返回值

我正在为我在golang中开发的功能编写单元测试。这是代码片段:funcmyFunc(){//thereissomecodeerr:=json.Unmarshal(a,&b)iferr!=nil{//handleerror}//thereissomemorecodeerr:=json.Unmarshal(c,&d)iferr!=nil{//handleerror}}现在我想模拟第一个unmarshal返回成功,第二个unmarshal返回失败。在python中,我看到一篇类似的帖子:Pythonmockmultiplereturnvalues但是我找不到golang的。谁能帮我解决这个

string - 如何在 slice 中写入函数的结果

在示例中,一切正常。但是他们不使用变量a并立即显示它https://play.golang.org/p/O0XwtQJRej但是我有一个问题:packagemainimport("fmt""strings")funcmain(){str:="fulltext"varslice[]stringslice=strings.Split(str,"")fmt.Printf("anwer:",slice)}答案中有多余的字符,例如%!(EXTRA[]string=附言我知道我需要使用append向slice添加元素,但现在我不明白如何在此处应用append。向上:现在我有了答案:anwer:%!

function - 高语 : Return 2d slice for any type

我知道如何创建这样的二维slice。vardata[]intdata=make([]int,w*h)v:=make([][]int,h)fori:=0;i由于这非常冗长,而且我将创建其中的许多内容,因此我决定将其重构为一个函数。funccreate2dSlice(w,hint)[][]int{vardata[]intdata=make([]int,w*h)v:=make([][]int,h)fori:=0;i这只适用于整数。在golang中有什么方法可以对重用相同代码的其他类型执行此操作?我来自C++,我希望能够做这样的事情。create2dSlice(w,h)

unit-testing - 模拟代码减少代码覆盖率

我正在使用Golang并使用mockhiato为所有接口(interface)生成模拟。该工具在同一包内的mocks.go文件中生成模拟实现。我无法将mocks.go重命名为mocks_test.go,因为此模拟文件已被其他包使用。问题是这些模拟文件由go覆盖率工具计算,因此降低了我对包的代码覆盖率。我正在寻找一个很好的解决方法,这样我的代码覆盖率就不会显示错误的数字。 最佳答案 在这种情况下,最好的办法是将模拟移动到它们自己的专用包中,这样就没有测试覆盖率。这将消除它们对您实际需要覆盖率数据的代码的影响。

unit-testing - 包含源和目标的 zip 文件夹

我使用以下代码将一些文件夹压缩到给定路径,我目前面临的问题是我需要将一些包含内容的文件夹压缩到特定目标而不是在同一目录中例如路径中的文件夹来源"/Users/i03434/go/src/zdf/BUILD"目标"/Users/i03434/go/src/zdf/app/info.zip"目前我尝试添加新路径[2],但没有帮助,知道怎么做吗?这就是全部代码funczipit(params...string)error{zipfile,err:=os.Create(params[1])iferr!=nil{returnerr}deferzipfile.Close()archive:=zip

unit-testing - 为 cli 输入编写测试

我有一个带有使用标志的cli的小型Go应用程序,我被要求使其更易于测试。我的应用程序在命令行上被调用,例如deploy.exe-tenanttenant_name-validate-package"c:\somedir\\"基于哪个task和command一个不同的执行路径被调用,最终驻留在另一个包中的函数被调用如下:ifcommand=="db"{dbhelper.RunDBCmds(*tenant,*validate,*package)}我只需要为标志解析编写单元测试,而不需要在最后调用实际函数。我是Go的新手,我正在努力弄清楚如何实现这一点。我考虑过将我的Os.Args()和Fl

unit-testing - 为包含内容的文件创建创建单元测试

我有以下获取文件并向其写入内容的函数。funcsetFile(file*os.File,appStrmodels.App){file.WriteString("1.0")file.WriteString("Created-By:applicationgenerationprocess")for_,mod:=rangeappStr.Modules{file.WriteString(NEW_LINE)file.WriteString(NEW_LINE)file.WriteString("Application")file.WriteString(NEW_LINE)file.WriteStr

unit-testing - httptest.NewRequest 设置上下文 stub

我正在创建一个请求stub,以便将其传递给被测试的函数:request:=httptest.NewRequest("GET","http://example.com/foo",nil)问题:我还可以通过向其添加request-uuid值来为该请求stubContext对象吗? 最佳答案 你有请求,你可以在移交之前用它做任何你想做的事。使用Request.Context()要访问其上下文,请使用context.WithValue()派生一个新的context.Context在其中包含您的键值,并使用Request.WithContex