草庐IT

constant_time_test

全部标签

unit-testing - 如何测试以确保函数被调用?

我想做单元测试。为了简单起见,我只想确保调用“JWTCheck”。我该怎么做?这是我实现JWTCheck的文件:typeJWTCheckerstruct{SubjectPrefixstring}func(j*JWTChecker)JWTCheck(nexthttp.Handler)http.Handler{//Dosomething}这是我实现路由器的地方:import("net/http""github.com/gorilla/mux")//Routerreturnsapreconfiguredrouterforapplicationfunc(a*Adapter)Router()ht

unit-testing - 如何确保所有异步函数在执行 defer 之前运行

我有一个函数说Myfunction(){x.RunAsync()//AsyncFunctioncall}我必须为Myfunction()编写一个测试用例。我正在为此使用go-mock。还有mockedx。Test_MyFunction(){mockCtrl:=gomock.NewController(t)defermockCtrl.Finish()//EXPECT()calltostubRunAsync()}现在的问题是我的测试运行成功,但不知何故最后它panic地说,对mockX.RunAsync()的调用丢失了。我认为这是因为在我的RunAsync被stub之前正在执行延迟。如何确

go - 我如何从 time.Now() 函数中获取分钟和小时

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭3年前。Improvethisquestion我正在做一个检查程序,我需要以分钟为单位的实时时间,比如如果是10:00,我应该有600分钟我尝试使用time.Now()函数以及.Hour和.Minute并且它有效但遗憾的是当涉及到ParseDuration来获取小时数时我得到这些错误:go:91:4:赋值不匹配:1个变量但time.ParseD

time - 两个持续时间的乘积在 Golang 变量中为零

在下面的Golang代码中,两个持续时间的乘积在变量“delay”中为零很奇怪,但是当不通过任何变量直接打印乘积时,输出符合预期。任何人都可以解释这个吗?funcStartCleanTask(){gofunc(){delay:=cfg.Config.Timeout*time.Secondfor{fmt.Println("Gocleantask:",delay,cfg.Config.Timeout*time.Second)select{case输出是:Gocleantask:05m0s更新:我还尝试运行以下代码,它运行良好。packagemainimport"fmt"import"tim

testing - 如何在 GO 中测试响应体?

我有以下功能:funcSomeFunction(whttp.ResponseWriter,...)error{...returnjson.NewEncoder(w).Encode(&c)}其中c是我的结构。当我运行该函数时,我收到带有json的响应主体,但我无法测试该函数。例如,我有:funcTestSomeFunction(t*testing.T){...w:=httptest.ResponseRecorder{}err:=SomeFunction(w,...)..}在这种情况下,我的w.Body是空的。问题不在于我的功能,因为我在运行时得到了body。我认为我没有以正确的方式进行测

algorithm - 不能在 time.AfterFunc 的参数中使用(属于)类型 func() 的函数

如果不遇到几个嵌套函数问题,我不知道如何解决这个Go算法问题。其中之一是,“不能在返回参数中使用func文字(类型func())作为类型func()字符串”。我现在使用的解决方案是://Writeafunctionthattakesin2numbers(a,b)andafunction.//Itshouldexecutethefunctionafteramilliseconds,//andthenexecutethefunctionagainafterbmilliseconds.packagemainimport"time"funcnewFunc(bint,fnfunc()string

unit-testing - 单元测试 os.File.Write 调用

我想对调用os.File.Write()的函数进行单元测试,并希望达到100%的覆盖率。此函数返回n和一个错误。引发错误很容易。我只需要关闭文件。我怎样才能不引起写入错误和写入数据长度的值n不同?看起来我应该创建一个虚拟的os.File,我可以在上面控制返回的错误。不幸的是,os.File不是一个接口(interface)。编辑:根据PeterOS的回答,仔细检查文档后,Write()方法,是否为io.Writer或io.File如果err为nil,将始终返回写入的slice的长度。结果,看来我的问题毫无意义。我学到了一些重要的东西,谢谢。我有一些代码要清理。附带说明一下,我对100%

function - 如何将 time.Duration 类型传递给 go 函数?

我正在学习GOLANG,尤其是它的并发能力。已尝试进一步开发worker_pool示例之一,以便每个工作人员都收到一个作业ID和一个作业负载,以作业的随机持续时间表示。time.sleep命令使用持续时间来等待分配的纳秒数,这是随机计算的。代码看起来像这样......//worker_poolimprovedexamplepackagemainimport"fmt"import"time"import"math/rand"//Here'stheworker,ofwhichwe'llrunseveral//concurrentinstances.Theseworkerswillrecei

unit-testing - 尝试在 TCP 监听器上提供服务时,由于超时,Go 测试模棱两可地失败

我有这个单元测试:funcTestServer(t*testing.T){db:=prepareDBConn(t)deferdb.Close()lis:=bufconn.Listen(1024*1024)t.Logf("Openedlistener:%v",lis)grpcServer:=grpc.NewServer(withUnaryInterceptor(),)t.Logf("Openedgrpcserver:%v",grpcServer)signKey:=getSignKey()ifsignKey==nil{t.Fatal("FailedtofindorparseRSApriva

go - 如果没有进一步的语句要执行,为什么 time.Sleep 不起作用?

我正在尝试运行下面这段代码packagemainimport("fmt""time")funcmain(){time.Sleep(time.Millisecond*6000)fmt.Println("Done")}正如预期的那样,它等待6秒,打印“完成”然后退出但是如果我删除打印语句,packagemainimport("time")funcmain(){time.Sleep(time.Millisecond*6000)}它不会等待并立即退出。为什么?因此,请看下面的代码packagemainimport("fmt""time")funcmain(){c:=make(chanint)g