草庐IT

模拟SPI

全部标签

unit-testing - 如何在 Golang 中实现 stub ? stub 和模拟之间有什么区别?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion我在Golang的单元测试中使用模拟。但是在Golang的实现代码中如何区分stub和mock呢?

go - 如何在 golang 中模拟 GCP 的存储?

我真的不熟悉在go中模拟第三方库,我现在正在模拟cloud.google.com/go/storage我正在使用mockery.这是我当前的界面://ClientstorageclienttypeClientinterface{Bucket(namestring)BucketHandleBuckets(ctxcontext.Context,projectIDstring)BucketIterator}//BucketHandlestorage'sBucketHandletypeBucketHandleinterface{Attrs(context.Context)(*storage.B

go - 我如何模拟接口(interface)内的特定嵌入式方法

我有这段代码,我想为更新功能编写一个单元测试。我如何模拟FindByUsername函数?我尝试覆盖u.FindByUsername但它不起作用。另外,我可以编写一些函数来将u*UserLogic和userNamestring作为输入参数并执行u.FindByUsername()和模拟这个函数,但这不是一个干净的解决方案我需要一个更好的解决方案来模拟UserOperation接口(interface)中的方法。packagelogicimport("errors""fmt")var(dataStore=map[string]*User{"optic":&User{Username:"b

go - 如何检查 Cloud Pub/Sub 模拟器是否已启动并正在运行?

我有GC功能,我使用CloudPub/Sub模拟器在本地开发和测试这些功能。我希望能够从Go代码中检查CloudPub/Sub模拟器是否已启动并正在运行。如果没有,我想通知开发人员他/她应该在他/她在本地执行代码之前启动模拟器。当模拟器启动时我注意到一条线INFO:Serverstarted,listeningon8085也许我可以检查端口是否可用或类似。 最佳答案 我猜你用过这个命令:gcloudbetaemulatorspubsubstart你得到了以下输出:[pubsub]ThisistheGooglePub/Subfake.

mongodb - 模拟官方 MongoDb 驱动程序

我需要定义这些接口(interface)来模拟官方的mongo驱动typeMgCollectioninterface{FindOne(ctxcontext.Context,filterinterface{},opts...*options.FindOneOptions)*mongo.SingleResult//Othermethods}typeMgDatabaseinterface{Collection(namestring,opts...*options.CollectionOptions)MgCollection//Othermethods}在mongo驱动包中有两个结构mongo

go - 获取 Go 的 HTTP post 来模拟 curl -d

我正在尝试通过Go将内容发布到nginx服务器。我已验证我能够通过curl正确发布此内容,特别是使用此命令:$curlhttp://example.com/myendpoint-d"SomeText"我能够看到这个POST,并正确处理它。但是,当我尝试使用Go执行POST时,它被服务器拒绝了。在nginx访问日志中,我看到这两行:127.0.0.1--[30/Jan/2014:05:57:34+0000]"POST/myendpointHTTP/1.1"4000"-""Go1.1packagehttp"127.0.0.1--[30/Jan/2014:05:57:39+0000]"Som

sqlite - 模拟对 sqlite 数据库的多个请求作为 goroutine 导致随机 panic

我正在尝试模拟从http.HandleFunc到对sqlite数据库进行更改的函数的多个请求。我假设http.HandleFunc调用的函数实际上是goroutine。见下面的代码:packagemainimport"fmt"import"time"import"code.google.com/p/go-sqlite/go1/sqlite3"import"crypto/rand"import"encoding/base64"funcgetrandomtext()(string){b:=make([]byte,12)rand.Read(b)en:=base64.StdEncoding//

go - 我如何在 Go 上模拟一个方法?

假设我有一个类型foo,其方法largerInt()调用largeInt()。我想测试largerInt(),所以我需要模拟largeInt(),因为可能有副作用。但是,我没有这样做。使用接口(interface)和组合,我可以模拟largeInt(),但在largerInt()内部,它似乎不可模拟,因为在调用它时,没有对包装类型的引用。知道怎么做吗?下面是我创建的一个片段来说明问题谢谢!packagemainimport("fmt")typefoostruct{}typemockFoostruct{*foo}typeMyInterfaceinterface{largeInt()int

go - 如何正确模拟导入的库?

我有一个导入:import{"github.com/aws/aws-sdk-go/service/route53"}然后我用它来处理AWSRoute53中的主机区域。我看到我创建的代码现在可以在当前设置下正常工作。为了简化开发过程,我想创建一个我在开发时使用的库方法的模拟。我在配置中有一个key,例如env="development"或env="production"。我的计划是添加我自己的对象,即route53和所需的方法,如果环境是开发环境,则将其导入。如何做得更好?golang是否支持条件导入,像这样:if(env=="development"){import"./route53

unit-testing - 如何模拟/单元测试嵌套函数

我有一个函数在其他函数中被调用。send_api.gofunction*send_api*(client*http.Client,urlstring)map[string]string,error{//sendapirequestandparsetheresponseandreturnthedictreturndictmapforeg:{applefruit}}然后这个函数在ma​​in()函数中被调用func*main()*{getmap:=send_api(client*http.Client,"test.com")}good.gofunc*get_dict_key*(keystr