草庐IT

test_cases

全部标签

testing - 如何在 Go 中测试 http.NewRequest?

我最熟悉Go中的测试,但正在努力寻找一种方法来测试以下函数:funcpostJson(urlstring,jsonData[]byte)error{req,err:=http.NewRequest("POST",url,bytes.NewBuffer(jsonData))iferr!=nil{returnerr}req.Header.Set("Content-Type","application/json")client:=&http.Client{}resp,err:=client.Do(req)iferr!=nil{returnerr}resp.Body.Close()return

testing - go中函数的正确测试方法

我刚开始接触测试。我的方法返回一个带有md5散列的[]byte。funcmyHash(sstring)[]byte{h:=md5.New()io.WriteString(h,s)returnh.Sum(nil)}它工作正常,哈希值看起来不错,但是当我用这种方法测试它时:funcTestMyHash(t*testing.T){s:="linux"bf:=("e206a54e97690cce50cc872dd70ee896")x:=hashor(s)if!bytes.Equal(x,[]byte(bf)){t.Errorf("myHash...")}}它总是会失败。首先,我认为将字符串转换

testing - go中函数的正确测试方法

我刚开始接触测试。我的方法返回一个带有md5散列的[]byte。funcmyHash(sstring)[]byte{h:=md5.New()io.WriteString(h,s)returnh.Sum(nil)}它工作正常,哈希值看起来不错,但是当我用这种方法测试它时:funcTestMyHash(t*testing.T){s:="linux"bf:=("e206a54e97690cce50cc872dd70ee896")x:=hashor(s)if!bytes.Equal(x,[]byte(bf)){t.Errorf("myHash...")}}它总是会失败。首先,我认为将字符串转换

testing - 在 Go 中模拟单个方法

在Go中,如何模拟一个接口(interface)而不必实现每个方法?假设我有一个Car接口(interface)和一个实现该接口(interface)的Corolla结构:typeCarinterface{changeTire()startEngine()....refuel()}typeCorollastruct{...}func(cCorolla)changeTire(){...}func(cCorolla)startEngine(){...}func(cCorolla)refuel(){...}假设我还有一个依赖于Car的Garage结构:typeGaragestruct{MyC

testing - 在 Go 中模拟单个方法

在Go中,如何模拟一个接口(interface)而不必实现每个方法?假设我有一个Car接口(interface)和一个实现该接口(interface)的Corolla结构:typeCarinterface{changeTire()startEngine()....refuel()}typeCorollastruct{...}func(cCorolla)changeTire(){...}func(cCorolla)startEngine(){...}func(cCorolla)refuel(){...}假设我还有一个依赖于Car的Garage结构:typeGaragestruct{MyC

unit-testing - 不运行名称为 package_test.go 的程序

我在包pack1下有以下代码。文件名是pack1.gopackagepack1varPack1Intint=42varpack1Float=3.14funcReturnStr()string{return"Helloworld!"}以及主程序中的以下代码。文件名是package_test.gopackagemainimport("fmt""./pack1")funcmain(){vartest1stringtest1=pack1.ReturnStr()fmt.Printf("Returnstringfrompack1:%s\n",test1)fmt.Printf("Integerfro

unit-testing - 不运行名称为 package_test.go 的程序

我在包pack1下有以下代码。文件名是pack1.gopackagepack1varPack1Intint=42varpack1Float=3.14funcReturnStr()string{return"Helloworld!"}以及主程序中的以下代码。文件名是package_test.gopackagemainimport("fmt""./pack1")funcmain(){vartest1stringtest1=pack1.ReturnStr()fmt.Printf("Returnstringfrompack1:%s\n",test1)fmt.Printf("Integerfro

go - 为什么 select case 将我的 for 循环减半?

在以下代码片段中,tasks是一个长度为30的缓冲channel,其中正好填充了30个元素。我正在编写一个for循环来处理从channel读入的每个任务。fori:=0;i但是,这个for循环只运行从0到14。当我改变这个channel的长度(这取决于我拥有的任务元素的数量)时,for循环总是只运行len(任务)。为什么会这样?背景:我为任务使用了一个缓冲channel,因为我打算在一个goroutine中执行每个任务,如果任务失败,就会处理这些任务。但是我目前已经将代码缩减为for循环中的一个selectcase,我对为什么selectcase导致for循环只执行了一半时间感到困惑。

go - 为什么 select case 将我的 for 循环减半?

在以下代码片段中,tasks是一个长度为30的缓冲channel,其中正好填充了30个元素。我正在编写一个for循环来处理从channel读入的每个任务。fori:=0;i但是,这个for循环只运行从0到14。当我改变这个channel的长度(这取决于我拥有的任务元素的数量)时,for循环总是只运行len(任务)。为什么会这样?背景:我为任务使用了一个缓冲channel,因为我打算在一个goroutine中执行每个任务,如果任务失败,就会处理这些任务。但是我目前已经将代码缩减为for循环中的一个selectcase,我对为什么selectcase导致for循环只执行了一半时间感到困惑。

json - 将 json 中的所有 snake_case 键转换为 camelCase 键

在Go中,我们如何将JSON中的snake_case键递归地转换为camelCase键?我正在用Go编写一个httpapi。此api从数据存储区获取数据,进行一些计算并以JSON格式返回响应。情况是数据存储区(ElasticSearch)中的JSON文档带有snake_case键,而API响应应该是基于驼峰命名法的(这只是为了与项目中的其他API标准保持一致)。插入到ES中的源不能修改。因此,只有在api级别才需要进行key转换。我写了一个结构,可以很好地从数据存储中读取JSON。但是如何在Go中将键转换为驼峰命名法?JSON可以嵌套,所有的key都需要转换。JSON任意大;即一些键只