草庐IT

testing - 如何在 Go 中使用 gomock 模拟函数?

我是Go的新手,正在做一些简单的小项目+养成测试习惯来学习......但是我在使用mock设置测试时遇到了问题。具体在设置模拟对象sample/sample.gopackagesampleimport("fmt""net/http")funcGetResponse(path,employeeIDstring)string{url:=fmt.Sprintf("http://example.com/%s/%s",path,employeeID)//madesomerequesthere//thenconvertresp.Bodytostringandsaveittovaluereturnv

testing - 如何在 Go 中使用 gomock 模拟函数?

我是Go的新手,正在做一些简单的小项目+养成测试习惯来学习......但是我在使用mock设置测试时遇到了问题。具体在设置模拟对象sample/sample.gopackagesampleimport("fmt""net/http")funcGetResponse(path,employeeIDstring)string{url:=fmt.Sprintf("http://example.com/%s/%s",path,employeeID)//madesomerequesthere//thenconvertresp.Bodytostringandsaveittovaluereturnv

go - 如何模拟 gRPC api 以与 golang 进行集成测试

全部我有一个用go编写的服务,它通过gRPC协议(protocol)与其他几个服务通信。我想为我的服务编写集成测试,但我不可能使用真正的依赖项。所以,我需要以某种方式模拟依赖关系。对我来说,一个完美的场景是这样的:我可以运行模拟服务器并将其地址传递给我的应用程序而不是真正的依赖项我可以为依赖服务的特定调用注册预期响应我可以重置模拟服务器以在测试用例后拆除数据。我尝试使用https://github.com/jekiapp/gripmock但它不支持所有的protobuff语法。什么可以帮助解决我的问题?也许我完全错了,并且有用于通信gRPC的服务集成测试的最佳实践

go - 如何模拟 gRPC api 以与 golang 进行集成测试

全部我有一个用go编写的服务,它通过gRPC协议(protocol)与其他几个服务通信。我想为我的服务编写集成测试,但我不可能使用真正的依赖项。所以,我需要以某种方式模拟依赖关系。对我来说,一个完美的场景是这样的:我可以运行模拟服务器并将其地址传递给我的应用程序而不是真正的依赖项我可以为依赖服务的特定调用注册预期响应我可以重置模拟服务器以在测试用例后拆除数据。我尝试使用https://github.com/jekiapp/gripmock但它不支持所有的protobuff语法。什么可以帮助解决我的问题?也许我完全错了,并且有用于通信gRPC的服务集成测试的最佳实践

go - 如何在 Go 中模拟 redis 连接

我正在使用https://github.com/go-redis/redis包进行Redis数据库调用。对于单元测试,我想模拟这些调用,是否有任何模拟库或方法可以做到这一点? 最佳答案 使用miniredis模拟更容易显然。您不需要模拟Get、Set、ZAdd等每个函数。您可以启动miniredis并将其地址注入(inject)代码中使用的实际客户端(例如go-redis):server:=miniredis.Run()redis.NewClient(&redis.Options{Addr:server.Addr(),})不需要进一

go - 如何在 Go 中模拟 redis 连接

我正在使用https://github.com/go-redis/redis包进行Redis数据库调用。对于单元测试,我想模拟这些调用,是否有任何模拟库或方法可以做到这一点? 最佳答案 使用miniredis模拟更容易显然。您不需要模拟Get、Set、ZAdd等每个函数。您可以启动miniredis并将其地址注入(inject)代码中使用的实际客户端(例如go-redis):server:=miniredis.Run()redis.NewClient(&redis.Options{Addr:server.Addr(),})不需要进一

go - 解决 mockgen 的导入包冲突

我有一个包冲突,我收到以下错误:mockgen-package=mocks-source=myproto.pb.go-destination=mocks/my_mocks.go导入包冲突:“foo”导入两次我看到一个很明显的导入:导入foo"blah/blah/foo"但我不知道从哪里开始追踪重复导入(也不知道它来自哪里)。这对我来说似乎很奇怪,因为我正在导入myproto.pb.go就好了,所以我想知道是否真的存在重复导入的问题。此外,GoLand未显示任何问题。我希望有人能为我指明方向,以获取有关重复导入的来源的更多信息,检查是否存在问题和/或解决问题。

go - 解决 mockgen 的导入包冲突

我有一个包冲突,我收到以下错误:mockgen-package=mocks-source=myproto.pb.go-destination=mocks/my_mocks.go导入包冲突:“foo”导入两次我看到一个很明显的导入:导入foo"blah/blah/foo"但我不知道从哪里开始追踪重复导入(也不知道它来自哪里)。这对我来说似乎很奇怪,因为我正在导入myproto.pb.go就好了,所以我想知道是否真的存在重复导入的问题。此外,GoLand未显示任何问题。我希望有人能为我指明方向,以获取有关重复导入的来源的更多信息,检查是否存在问题和/或解决问题。

unit-testing - 你在哪里存储可重用的模拟?

您能否解释一下组织单元测试的正确方法是什么?例如,如果想模拟我的结构依赖项,我需要创建一个“实现”某些接口(interface)的模拟依赖项。我应该在哪里创建这个模拟?它应该在同一个测试文件中创建吗?但是如果我在另一个测试中需要它怎么办?Go不允许在同一包的两个不同文件中定义具有相同名称的结构(例如UserServiceMock)。那么定义这个模拟结构的最佳位置是什么?还有一个问题。我应该自己实现这种模拟还是有一些库/工具允许我这样做? 最佳答案 我将我的模拟存储在一个模拟包中,这样我就可以从不同的测试包中调用它们,并在我的测试中使

unit-testing - 你在哪里存储可重用的模拟?

您能否解释一下组织单元测试的正确方法是什么?例如,如果想模拟我的结构依赖项,我需要创建一个“实现”某些接口(interface)的模拟依赖项。我应该在哪里创建这个模拟?它应该在同一个测试文件中创建吗?但是如果我在另一个测试中需要它怎么办?Go不允许在同一包的两个不同文件中定义具有相同名称的结构(例如UserServiceMock)。那么定义这个模拟结构的最佳位置是什么?还有一个问题。我应该自己实现这种模拟还是有一些库/工具允许我这样做? 最佳答案 我将我的模拟存储在一个模拟包中,这样我就可以从不同的测试包中调用它们,并在我的测试中使