我正在上类中编写一个小型POC,但我似乎无法弄清楚模拟技术。这是我目前所拥有的...connect.gopackagedbimport("database/sql""encoding/json""fmt""io/ioutil""strings"_"github.com/lib/pq")typeconfigmap[string]interface{}typeDbConnstruct{dbdb}typedbinterface{getConnectionStringFromConfig(filestring)(connStrstring,errerror)}funcNewDbConn(ddb
我有以下功能,我需要为它创建一个单元测试packagemainimport("fmt""io/ioutil""os")typeSourcestruct{Pathstring}typefileReaderinterface{readOneFile()([]byte,error)}func(sSource)readOneFile()([]byte,error){cwd,err:=os.Getwd()file,err:=ioutil.ReadFile(fmt.Sprintf("%s/file.txt",cwd))iferr!=nil{returnnil,fmt.Errorf("errorea
我正在编写单元测试,我想编写一个单元测试来断言结构上的公共(public)方法(Foo.Start)正确处理来自结构上内部方法的错误响应(Foo.internal)。本质上,我想在我的代码的这一部分获得测试覆盖率:iferr!=nil{returnerr}这是一个代码示例和相关的测试,它不起作用(但可以在Python中运行)#example.gopackageexampleimport"fmt"typeFooAPIinterface{Start()errorinternal(string)(string,error)}typeFoostruct{FooAPI}func(fooFoo)S
我正在用go编写一个网络应用程序,它运行得很好。然而,当为一个包运行测试时,gotest命令只是挂起(它什么都不做,甚至没有终止)。我有一个测试启动服务器的函数:funcmkroutes(t*testing.T,ffunc()){handlerRegistry=handlerList([]handler{})middlewareRegistry=[]middleware{}iftestListener==nil{_testListener,err:=net.Listen("tcp",":8081")testListener=_testListeneriferr!=nil{fmt.Pri
我有一个包pkg。包pkg的测试在_test.go文件中。然而,为了初始化测试运行器,我需要一个来自其他包的函数,由于循环依赖,我无法在pkg中导入它。我的想法是使用pkg_test包。有什么方法可以从pkg_test中的pkg访问测试函数(在_test.go文件中)?我的项目结构:├──f.go#packagepkg├──f_test.go#packagepkg├──init_test.go#packagepkg_test换句话说:我想在init_test.go中从f_test.go访问一个函数,反之亦然(从init_test.go在f_test.go中。有什么办法吗?PS:在f_t
我正在使用图书馆gozk将我的应用程序与生产zookeeper服务器连接起来。我想测试应用程序是否创建了正确的节点,它们是否包含各种情况下的正确内容,以及DataWatch和NodeWatch是否设置正确:即应用程序根据节点和数据更新执行应执行的操作。我能否拥有一个仅在单元测试期间创建和销毁的模拟zookeeper服务器,并且能够人为地创建新节点并设置节点内容?除了手动创建zookeeper服务器并使用它之外,还有其他方法吗?java的解决方案已经存在 最佳答案 我建议将您调用zookeeper的代码变成一个接口(interface
我有一个Go项目,我在其中使用glide进行包管理。我有一个使用godog的测试套件设置,我使用TestMain包装器通过gotest运行它,如docs中所述godoc(格式为pretty)。因为我不想测试我销售的包,所以我调用测试gotest$(glidenovendor)在我的例子中,项目非常简单,glidenovendor只是返回一个。现在我的问题是:为什么在运行gotest时,我得到了很多漂亮的输出,列出了场景和步骤等等,但是当我运行去测试。我刚得到一个单行okgitlab.knf.local/ngs/gpp0.015s[noteststorun](即使我添加了虚拟测试,这也不
目前,我正在尝试建立单元测试go处理程序的最佳实践。我需要模拟依赖项,但因此我必须能够访问/模拟这些依赖项。有一些我不想考虑的解决方案,例如全局变量/应用程序状态。或者将所有处理程序作为包含依赖项成员变量的结构的函数。我对通过以下方式注入(inject)处理程序所需的依赖项的解决方案感到满意:funchelloHandler(db*DbService)http.HandlerFunc{returnfunc(whttp.ResponseWriter,r*httpRequest){//handlercodegoeshere}}然后我可以为路由提供这个处理程序:http.HandleFunc
我正在为我在golang中开发的功能编写单元测试。这是代码片段:funcmyFunc(){//thereissomecodeerr:=json.Unmarshal(a,&b)iferr!=nil{//handleerror}//thereissomemorecodeerr:=json.Unmarshal(c,&d)iferr!=nil{//handleerror}}现在我想模拟第一个unmarshal返回成功,第二个unmarshal返回失败。在python中,我看到一篇类似的帖子:Pythonmockmultiplereturnvalues但是我找不到golang的。谁能帮我解决这个
我正在使用Golang并使用mockhiato为所有接口(interface)生成模拟。该工具在同一包内的mocks.go文件中生成模拟实现。我无法将mocks.go重命名为mocks_test.go,因为此模拟文件已被其他包使用。问题是这些模拟文件由go覆盖率工具计算,因此降低了我对包的代码覆盖率。我正在寻找一个很好的解决方法,这样我的代码覆盖率就不会显示错误的数字。 最佳答案 在这种情况下,最好的办法是将模拟移动到它们自己的专用包中,这样就没有测试覆盖率。这将消除它们对您实际需要覆盖率数据的代码的影响。