问题标签 [testify]

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 投票
1 回答
449 浏览

http - 试图模拟 http.Client 并出现错误

嘿,所以我已经看到并使用这篇文章来帮助模拟我的 http.Client 但是当我尝试传递模拟请求时,我收到以下错误:不能使用 mockClient (variable of type *MockClient) as *"net/http".Client api.callAPI 参数中的值。

在一个文件中,我有我的实际代码:

我创建了 HTTPClient:

我有将 HTTPClient 作为接口传递的函数(我无法显示所有这些,因为它是为了工作,但这是重要的部分):

我还有另一个调用 callAPI 方法的函数。在该函数中,我在调用 callAPI 函数之前创建了客户端变量

这一切都很好。但是,在我的测试文件中,我收到了上述错误。我正在为我的模拟框架使用 testify。这是我的测试文件中的内容(测试文件和实际代码都在同一个包中):

使用 testify 设置我的模拟客户端和 Do 函数

然后创建我的测试:

我尝试对 mockclient 变量做类似的事情,就像我对 Client 变量所做的那样:

但我在 HTTPClient 上收到此错误:未声明的名称:HTTPClient。不确定为什么会发生这种情况,因为它们是同一个包的一部分,所以我认为它可以轻松导出?

0 投票
1 回答
83 浏览

date - 如何比较两个时间戳 - 仅因为一个具有时区而有所不同?

我正在尝试测试time.Time我插入到 postgres 数据库中的值是否与我正在查询的值相同。虽然 Postgres 放弃了时区,所以我想知道如何让这个作证/断言测试通过?

s.Equal(want.Date, got.Date)

两者都是 dame 数据类型time.Time,但第一个具有时区:

2020-10-31 00:00:00 +0000 UTC

我像这样创建了这个值 -time.Date()必须获取一个位置,所以我无法通过传递 nil 来创建它:

want.Date := time.Date(2020, 10, 31, 00, 00, 00, 0000, time.UTC)

got.Date来自数据库的样子:

2020-10-31 00:00:00 +0000 +0000

我无法更改删除时区的数据库,那么如何更改创建日期的方式或如何删除时区?或者也许有另一种方法可以断言年、月和日是相同的?

0 投票
0 回答
242 浏览

unit-testing - Golang 拉伸器证明对同一类中的函数的模拟调用

我对 Golang 很陌生,并且正在为函数编写单元测试(我正在使用stretchr testify 进行模拟)。但是,此函数调用同一类中的另一个函数。但是在对第一个函数进行单元测试时,我想模拟对第二个函数的调用,因为我不希望它真正调用第二个函数。这在 Java 中很容易,但我在 Go 中找不到任何有用的信息。这是我的函数的一些代码片段:

正如您在此处看到的,GetProducts是我尝试进行单元测试的函数,并且该函数调用GetDetails. 我想模拟对GetDetails. 这在 Go 中可能吗?我们通常会在 Go 中模拟此类函数调用吗?推荐吗?如果是,那么正确的方法是什么?

在我的测试中,我有:

这将调用函数 GetProducts。但是现在我不知道要进行哪些更改,因此可以模拟对 GetDetails 的调用。我将不胜感激这方面的任何帮助

0 投票
1 回答
767 浏览

go - 测试用例中的 Golang 数据竞争条件

所以我有一些管道。我必须逐行比较 2 个文件,例如加载到数据库。我想有一些超时来处理单行,如果它达到了就中断管道。输入端点是函数Run()。在这里,我们进行一些验证并使用命令创建结构

之后在 fuction 中run(),我们开始在单个 goroutine 中处理 stdout,并comm在 ubuntu 中运行主进程命令。好吧,它工作正常,我在比赛中检查了它: go build --racego run --race。没有问题和输出。但我有测试,检查简单的逻辑。它工作得几乎很好,1 次前 10 次运行它失败了。在我对此进行调查之后,我在这个测试中发现了竞争条件。有人可以解释一下,出了什么问题?

进入

破损测试

输出

0 投票
1 回答
2333 浏览

go - 如何在golang中使用stretchr/testify通过表测试运行testify setup/teardown?

我正在使用testify进行测试。我已经为我的测试设置了一个套件。但是,在使用表测试时,我无法使用设置和拆卸功能。这是设计使然吗?

当我运行时,TestUnitTestSuite我得到以下输出:

请注意,setupandbefore test仅在输出中出现一次,即使有两个测试正在运行。

有没有办法在我的SetupTest每个表测试之前自动运行(或其他替代方法)?

0 投票
1 回答
94 浏览

unit-testing - 在 Go 中使用 HTTP 请求测试函数最惯用的方法是什么?

我有一个有趣的小天气应用程序。只需 99 美元/天,该应用程序就会每天检查天气,如果西雅图下雨,就给圣地亚哥的人们送一把雨伞。

我将这两个函数用作我的应用程序的一部分:

我想测试IsRaining()and SendUmbrella(),但我不想每次运行测试时都给别人送伞;我的工程师使用 TDD,我确实有预算,你知道的。同理IsRaining(),万一断网了怎么办?我仍然需要能够通过测试运行,风雨无阻。

我想以这样一种方式来做到这一点,即代码保持符合人体工程学和可读性,但我绝对需要能够测试那些依赖于 HTTP 的函数。在 Go 中最惯用的方法是什么?

PS我正在使用Testify。在评论中告诉我所有关于我如何失去对惯用 Go 的任何希望 :)

0 投票
1 回答
273 浏览

go - 在传递正确的参数时证明模拟的断言失败

Golang初学者在这里。我正在尝试为我的结构编写测试,最终模拟统计接口。就测试而言,我的代码的相关部分如下所示。

我的调用代码看起来像

当我运行我的测试时,我得到了错误

你能帮我解决我在这里缺少的东西吗?谢谢。顺便说一句,使用 Go 1.16.3

0 投票
1 回答
457 浏览

go - Go goroutine 测试失败预期调用次数

我是新来的。我正在尝试在我的 Go 例程中测试函数调用,但它失败并显示错误消息

预期调用次数 (8) 与实际调用次数 (0) 不匹配。

我的测试代码如下:

我的应用程序代码是:

你能指出我在这里做错了什么吗?我正在使用 Go 1.16.3。当我调试我的代码时,我可以看到 Execute() 函数被调用,但 testify 无法注册函数调用

0 投票
1 回答
1047 浏览

unit-testing - 如何断言与stretchr/testify/mock AssertCalled 的部分匹配?

考虑 Go 中的这个单元测试文件。我正在使用github.com/stretchr/testify/mock包。

该测试失败,因为当我没有通过年龄时在比较中testify使用。Age: 0我明白了,但我想知道,我如何断言通过的部分论点?我希望这个测试能够通过Age,只要Name = John

0 投票
0 回答
164 浏览

go - 模拟将结果存储在指针参数中的方法

我想将我的单元测试函数中的测试报告数据设置为即时模拟,GetTestFunc但实际上GetTestFunc只返回error并设置我的指针变量TestReport

但是在使用模拟时,我们正在返回,但指针变量的设置没有发生,所以我想在TestReport指针变量中分配预期值,这样我就可以为方法的其他路径编写 Ut。

使用“github.com/stretchr/testify/mock”