我写了一个函数:funcAllItems(whttp.ResponseWriter,r*http.Request){db,err:=gorm.Open("sqlite3","test.db")iferr!=nil{panic("failedtoconnectdatabase")}deferdb.Close()varitems[]Itemdb.Find(&items)fmt.Println("{}",items)json.NewEncoder(w).Encode(items)}我想对此进行单元测试。理想情况下,单元测试意味着需要测试函数的每一行。我不确定我应该如何测试数据库连接是否打开以
我正在寻找断言我的测试中涵盖了一个语句。例如,假设从测试开始调用methodA(),它引用了methodB()。我想断言在从测试中执行methodA()时会调用methodB()。在下面的代码中,我如何在Go测试中断言svc.AddCheck()在执行svc.OnStartup()时被调用?func(svc*Servjice)OnStartup()error{iferr:=svc.AddCheck("cache");err!=nil{returnerr}returnnil} 最佳答案 Isitpossibletoassertthat
我正在为GoLang应用程序编写测试用例,我正在使用sqlmock模拟SQL查询,但在执行gotest时出现以下错误Params:[调用查询,不是预期的,下一个预期是:ExpectedBegin=>expectingdatabasetransactionBegin]对此有什么想法吗? 最佳答案 sqlmock期望有一个开始,但却得到了其他东西。在此处显示功能并进行测试以获取更多信息。 关于unit-testing-在GoLang的sqlmock中出错,我们在StackOverflow上找
在尝试moq框架的示例时,当我输入“gogenerate”时出现以下异常:example.go:5:running"moq":exec:"moq":executablefilenotfoundin$PATH我该怎么办?我正在使用Kubuntu16.04PS:我试过了exportPATH=$PATH:/home/[...]/go/src/github.com/matryer/moq没有成功 最佳答案 @sprabhakaran得到了正确的答案。我只需要将go二进制文件夹添加到PATH全局变量:exportPATH=$PATH:/hom
作为我第一个项目的一部分,我正在创建一个小型库来向任何用户发送短信。如果第一次没有收到肯定状态,我已经添加了等待和重试的逻辑。这是对短信发送服务的基本HTTP调用。我的算法看起来像这样(注释会解释代码的流程):for{//sendrequestresp,err:=HTTPClient.Do(req)checkOK,checkSuccessUrl,checkErr:=CheckSuccessStatus(resp,err)//ifsuccessfuldon'tcontinueif!checkOKandcheckErr!=nil{err=checkErrreturnresp,SUCCESS
这个问题在这里已经有了答案:Howtomockamethodcallofastructintestcaseatgo(2个答案)关闭4年前。所以我是Golang中模拟结构和函数的初学者。我基本上想检查是否已为单元测试目的调用了一个函数。这是代码:typeAstruct{}func(a*A)Foo(){}typeBstruct{a*A}func(b*B)Bar(){a.Foo()}我基本上想检查在调用Bar时是否确实调用了Foo我知道有一些可用于Golang的模拟框架,但在测试现有结构和结构方法时它们非常复杂
我在里面写了一个RESTapi。现在我想通过隔离不同的组件来对其进行单元测试。项目结构如下所示,有两个主要包├──main.go├──routes│├──routes.go│└──routes_test.go├──db│└──db.gomain.go:项目的主要入口点routes/routes.go:HTTP路由处理包db/db.go:数据库处理器包现在,当我测试http路由时,我只想测试请求是否被路由到正确的处理程序函数,然后它们会做出相应的响应。在实际应用程序中,处理函数实际上会插入/更新数据库,但我不想在测试时这样做。因此,如果我可以模拟一个数据库对象并使我的处理程序函数针对
我正在尝试使用go-mocket来模拟gorm数据库,但它无法正常工作。我没有向我的ClusterExists函数发送任何模拟数据,因此单元测试无法按预期工作。在文档中有两种模拟“简单链用法”和“FakeResponse”的方法。我已经尝试了两种方法,但都不起作用。我的功能:funcClusterExists(cluster*Cluster,db*gorm.DB)bool{c:=Cluster{}exists:=!db.Where("cluster_name=?ANDenv_type=?",cluster.ClusterName,cluster.EnvType).First(&c).R
我有一个下面的函数tryGet()来进行单元测试:typeconfigstruct{Keystring`json:"key"`Clienttodo.Client`json:"client"`}varinstance*configfunc(c*config)tryGet()error{client:=&http.Client{}tClient:=Client{"http://url",client}configValues:=config{"Key",tClient}Instance:=&configValueserr:=Instance.Client.perform("GET",hea
我正在借助gosqlmock编写一些测试代码。以下代码不验证准备好的语句是否具有正确的查询。主要代码是这样的://main.gopackagemainimport"database/sql"functestFunction(db*sql.DB){db.Prepare("SELECT")}funcmain(){}和测试代码://main_test.gopackagemainimport("testing""github.com/stretchr/testify/assert"sqlmock"gopkg.in/DATA-DOG/go-sqlmock.v1")funcTestPrepare(