问题标签 [go-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
618 浏览

go - 测试无法捕获日志输出

我正在尝试测试我的UserRegister功能,它需要http请求。

如果用户输入已经存在的电子邮件,UserRegister则返回错误日志(使用logrus)。

在我的测试模块中,我使用了以下内容。

结果:解析响应 strconv.Atoi 时出错:解析“”:语法无效

为什么响应不能转换?

检查线程:

为什么这个将字符串转换为整数的 Golang 代码失败了。

编辑:在@chmike回答之后。

这是微服务的一部分。所有响应都写入API-Gateway. 使用一个函数。

但在这里我只想执行单元测试并检查我的UserRegister工作是否符合预期。

0 投票
3 回答
1596 浏览

go - 运行测试用例时,模拟方法在 golang 中不起作用

我试图在测试用例中模拟一个结构方法,但它不起作用。我想在这里模拟Validate方法:`

`

我的测试用例:

这里没有调用MockDemoStruct.Validate 。我从 Validate 得到INVALID NUM 110,但它应该是MOCK ERROR 110

0 投票
1 回答
565 浏览

go - 在所有集成测试之前运行

Go 有能力在所有测试之前运行一些代码吗?我知道 Go 提供了 TestMain(),但它的包范围是 func,并且只会在她所在的包中设置和拆除测试。

但是我想在所有测试之前运行一些 docker 测试容器,当然,在所有测试完成后将其拆除。

0 投票
1 回答
244 浏览

go - 模拟测试文件中定义的接口:接口“未定义”?

这是一个我试图用一个最小的例子重现的错误,但到目前为止没有成功。Go 模块类似于以下内容:

wherehandler.go为空(package handler仅包含),handler_test.go包含Handler接口定义(与 Go 相同http.Handler)和占位符测试,

mock_handler.go包含一个MockHandler实现Handler接口并使用以下方法生成的结构moq

为了生成mock_handler.go,我最初定义了Handlerinhandler.go然后在handler目录中运行命令

我随后将Handler接口定义移动到,handler_test.go因为它仅用于测试。

在这个简化的示例中,我可以go test在根目录中以包列表模式运行:

我的“实际”模块具有类似的结构,类似于以下内容:

接口的定义方式与简化模块中的完全相同Handler;像这样开始:ensure_license_test.gohandler_test.goensure_license_test.go

mock_handler.go也与简化模块中的完全相同mock_handler.go(包名除外)。

然而,当我go test ./...在“实际”模块的根目录中运行时,undefined出现以下错误Handler

奇怪的是,当我从vpp包中运行它时,它通过了:

像第一个示例中那样从根目录以包列表模式运行它时go test无法定义定义的原因可能是什么?Handler

0 投票
1 回答
1407 浏览

mongodb - Go:如何对一段适用于 Mongo 集合的代码进行单元测试?

我正在使用Go的官方 Mongo 驱动程序。我的代码看起来像这样(为了使示例更简单,省略了错误处理):

问题:如何对GetUsers功能进行单元测试?

我浏览了驱动程序的文档,没有找到任何与测试相关的功能/最佳实践。

注意:完整代码可在GitHub上找到。

0 投票
1 回答
228 浏览

go - 将测试覆盖率输出发送到标准输出 - 将其发送到 S3

我想将 html 发送go test -c到标准输出,这样我就可以从 S3 静态资产服务器提供生成的 HTML。

像这样的东西:

有没有办法在不使用的情况下写入标准输出-o /dev/stdout

0 投票
2 回答
2463 浏览

go - Go:没有对包进行测试时的错误覆盖率

我有一个具有以下结构的 Go 项目:

如您所见,没有针对main.go.

我使用以下命令收集覆盖率报告:

在这里./foo./显示在哪里寻找包裹。

问题:我将覆盖率报告发送到 codecov.io,这表明我的代码 100% 被测试覆盖。但这不是真的,因为我main.go根本没有测试。

似乎系统只计算那些明确指定测试文件的包。

问题:如何修复覆盖率报告以计算有关未测试包的信息?

注意:你可以在GitHub 上找到我的项目,真实的统计数据在这里。该项目具有不同的结构,但问题仍然存在(错误的报道)。

0 投票
1 回答
7300 浏览

go - 为什么在新计算机上访问 Firestore 时出现“恐慌:运行时错误:无效的内存地址或零指针取消引用”?

如果我尝试运行测试或直接通过以下方式运行应用程序,我会感到恐慌: go run main.go 该代码在我的旧 Macbook Pro 上运行良好。它在我的新 Macbook Pro 上出现恐慌。

我认为该错误与访问 Firestore 数据存储有关,但我不确定出了什么问题。

我正在运行相同的代码,因此数据存储区密钥和其他所有内容都应该相同。

这是 Github 存储库: https ://github.com/golangnewb/FirestoreTestHttp

工作电脑:go 版本 go1.11.2 darwin/amd64

Panic Computer: go version go1.13.5 darwin/amd64

如果我尝试通过以下方式运行,这是恐慌:

❯去运行main.go

0 投票
1 回答
87 浏览

go - 如何模拟多个 url 以返回夹具内容?

我正在编写某种递归解析器。最简单的形式是:

  1. 取自all linksfirst link页面正文
  2. 对每个链接重复第一步

所以现在我想测试它。问题是我想不出模拟所有这些页面的最佳方法。我使用http包,并且我已经使用httptest包(通过httptest.NewServer)编写了一些测试。但现在对我的任务似乎没有用。我想最好的方法是使用http.Client自定义Transport结构,但它有很多样板和额外的臭代码。有没有更优雅的方法来做到这一点?

0 投票
1 回答
136 浏览

go - 使用 Go Modules 时外部基准测试的最佳实践

我有一个 Go 存储库,其中有一些基准测试(在_test后缀的包中)。这些基准将其与一些第三方库进行比较。我没有在我的非基准代码中使用这些库。

我现在正在将我的 repo 迁移到 go 模块。我不想在我的 go.mod 中使用这些第三方库,因为我的库在正常使用时不需要它们,而且我不想将我的模块不必要地绑定到这些库。

推荐的 go-mod 方法是什么?我的想法:

  • 在基准上构建标签
  • 另一个回购的基准
  • 我的模块中的模块