问题标签 [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 回答
218 浏览

go - 在测试二进制文件中禁用竞争检测

有没有办法在编译的测试二进制文件中禁用数据竞争检查?

有时我想在我的测试套件中专门排除二进制文件。当然我不能运行它,go test -race但我必须重写我们的测试管道的一部分,因此有选择地禁用二进制文件会更有意义。

0 投票
1 回答
647 浏览

go - 扩展或解包结构作为测试的输入参数

我想通过使用一个用于测试输入的结构和另一个用于测试复杂测试所需输出的结构来缩短我的测试代码。

我有这样的测试代码,它可以工作:

我的虚拟功能:

但是,如果我有更复杂的输入和输出,我不想输入所有参数,而是想将它们分组到 1 个结构中,如下所示:

我遇到的错误:

这是有道理的,但我一直在努力“传播”我的 TestInput 中的值以传递我的函数。我想做的就像在 JS 中一样,我可以做...params“传播”或在 Python**params中“解包”。

我已经在这里这里这里这里查看了答案,但仍然无法弄清楚这一点。

0 投票
0 回答
392 浏览

go - 如果我设置了上下文超时,则无法从主题读取消息-segmentio/kafka-go reader

我有一个 Kafka ConsumerGroup (Golang/Segmentio) 和一个读者作为单元测试用例的一部分

阅读器能够阅读消息,但在阅读了主题中的所有消息后,它正在等待新消息,并且测试用例在 30 秒后超时。

如果我设置context.WithTimeout(ctx, 20*time.Second),那么阅读器将无法阅读该主题的任何消息。

那么我怎样才能从主题中读取消息并继续而不是等待新消息。

0 投票
1 回答
113 浏览

go - 全局 var 结构更新在其他测试功能中不可用

我正在测试一个需要“登录”并获取存储在结构中并传递给我的函数的身份验证令牌的 API。我正在尝试编写一个“_test.go”文件,但 Auth Token 没有传递给测试函数,我不知道为什么。所有在线示例测试文件都非常简单,我找不到任何与我在这里尝试做的示例相近的示例——但话又说回来,这可能是我今天的 Google Foo 很弱..

这是代码:

'd' 结构包含我进行 API 调用所需的所有信息,我在想将它声明为全局,它将可供所有测试函数使用,但是当我总是得到“Auth Token Missing”错误时调用我的 API 函数:

Auth Token 的测试在 TestMain() 中通过,但结构的更新似乎没有出现。我不能将结构作为 var 或引用传递,因为这会破坏测试。我究竟做错了什么?

0 投票
1 回答
769 浏览

go - 为什么运行 mux API 测试时响应体为空?

在遵循他们的教程之后,我正在尝试在 Go 中构建和测试一个非常基本的 API,以了解有关该语言的更多信息。API 和定义的四个路由在 Postman 和浏览器中工作,但是当尝试为任何路由编写测试时,ResponseRecorder 没有正文,因此我无法验证它是否正确。

我按照此处的示例进行操作,它可以工作,但是当我为我的路线更改它时,没有响应。

这是我的main.go文件。

这是我的main_test.go文件。

我很感激我可能犯了一个初学者的错误,所以请怜悯我。我已经阅读了许多测试多路复用器的博客,但看不出我做错了什么。

提前感谢您的指导。

更新

移动我的 SeeData 呼叫以init()解决人员呼叫的主体为空的问题。

但是,我现在在测试特定 id 时没有返回任何正文。

移动我的 SeedData 呼叫以init()解决人们呼叫的身体为空的问题。

创建一个新的路由器实例解决了访问路由上的变量的问题。

0 投票
1 回答
629 浏览

unit-testing - 去单元测试 Bcrypt

我正在对一项服务执行单元测试,其中验证了请求 dto,并使用 Go 的Bcrypt 包对用户密码进行了哈希处理,然后再将其传递到存储库以插入数据库。

我不知道我的模拟函数应该如何返回一个应该与服务的散列匹配的虚拟响应。

HashAndSalt简单地散列给定的字符串。

这是服务的RegisterAccount

这是抛出的错误,请注意模拟请求与给定请求不匹配的want和块。got

希望我的解释是有道理的,在我的代码所依据的文章中没有讨论单元测试。

0 投票
1 回答
590 浏览

go - 为什么我的 Gin and Go 测试没有通过?

我正在尝试测试我的 API。在这种情况下,我有这个主文件:

我有这个 main_test 文件

测试失败,因为绑定时,Gin 没有找到mykeyjson key,报错Key: 'ID' Error:Field validation for 'ID' failed on the 'required' tag

为什么会这样?我尝试以不同的方式格式化 JSON 正文,但无法使其正常工作

0 投票
1 回答
1047 浏览

go - Golang在正文中使用一些参数模拟调用,其值不固定

我正在模拟一个方法调用,如下所示:

效果很好。

现在,在这里,不是为 field 传递一个固定值creationDate,如果我想概括它以便它适用于传递的任何值,我该如何实现呢?我对 Go 很陌生,所以不知道该怎么做

creationDate 的值可以是任何值,例如 -2021-03-19T18:57:16.589Z2022-04-23T14:17:56.589Z等等。我只是不想限制模拟调用为 creationDate 的固定值工作,但我希望它适用于传递的任何日期字符串

0 投票
0 回答
196 浏览

go - 如何获得 GoLang 微服务的集成测试覆盖率

我创建了几个基于 Rest API 的微服务,运行在服务器的不同端口上。然后我编写了一个测试代码,它实际上通过 HTTP 向 serviceA(进而调用 serviceB)发送了一个 Rest API 调用,并获取它的响应,对其进行解码并将其与预期的响应进行比较。
这一切正常,但是当我运行它时测试显示 0.0% 的覆盖率go test -cover

我手动运行每个服务。

integration_test.go有一个TestFunc()字面上调用一个serviceA/main.go使用的 REST API 端点http.Client{}http.NewRequest()然后检查响应。响应与预期一致,但覆盖率serviceA为 0.0%,这不应该是这种情况,因为它实际上发回了一些数据,因此执行了多行。

服务 A 和 B 不是 lib 包,所以我不能使用这里-coverpkg提到的 cmd

可能我正在寻找可以覆盖黑盒组件/服务的工具。

0 投票
1 回答
2110 浏览

unit-testing - 使用接口进行模拟以进行测试

我对 Go 很陌生,而且我来自 OOP 语言。现在,接口和类的概念似乎完全不同。

我想知道在测试的情况下模拟将如何工作。我的困惑是是否可以struct用作一个类,如果下面的方法是你想怎么做的?假设这DefaultArticlesRepository将用于真实数据并MockArticlesRepository用于模拟它。