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

go - 从包函数中返回一个 Mock

我对 Go 还很陌生,在编写测试时遇到了一些问题,特别是模拟包函数的响应。

我正在为github.com/go-redis/redis. 目前它确实只有更好的失败错误,但它会随着 statsd 跟踪进一步扩展,但我离题了......

我有以下我创建的 go 包

我的问题是我想redis.NewClient返回一个模拟。这是我编写的测试代码,但它不起作用:

我收到以下错误:cannot use clientMock (type *redisClientMock) as type *redis.Client in return argument。我想我读到我需要模拟 的所有功能redis.Client才能在这种情况下将其用作模拟,但真的是这样吗?这似乎是矫枉过正,我应该能够以某种方式做到这一点。我该如何让这个测试工作,或者我是否需要重组我的代码以便更容易编写测试?

0 投票
4 回答
1629 浏览

go - 如何接收由 testify 框架“assert”方法中的方法返回的多个值作为参数?

下面是一个示例代码,它返回多个值。

在测试文件中,我尝试过做以下事情。

我还检查了其他答案,但找不到我需要的。

0 投票
2 回答
5478 浏览

go - 进行单元测试 - 调用数据库事务开始,不是预期的错误

我正在尝试使用 Data Doggo-sqlmocktestify.

我有以下代码:

但是当我运行时TestInit,我收到以下错误:

我有几个问题:

  1. 这里有什么问题?
  2. 有没有办法知道SetupSuite函数是否正在运行?
  3. 为什么? my-project [no test files]我跑步时会得到go test?这是上面代码的文件路径:my-project/test/models/User_test.go
0 投票
1 回答
1056 浏览

go - 如何在使用 gin 框架进行模拟时将 json 数据作为请求参数传递

我有一个功能可以创建正常工作的用户。现在我必须在Prepare and SaveUser里面模拟函数CreateUser。但这CreateUser需要 json 数据作为请求参数。下面是我的CreateUser功能。

这是上述创建用户所需的 json 数据作为请求参数。我想在模拟时传递以下数据。

下面是模拟上面创建用户功能的测试用例。

提前致谢。

0 投票
1 回答
2835 浏览

go - 通过拉伸器/作证模拟,不同的返回参数

下面的函数描述了如何使用 testify 进行模拟。args.Bool(0),args.Error(1)是模拟的位置返回值。

是否可以返回除 args.Int(), args.Bool(),以外的任何内容args.String()?如果我需要退货int64,或者定制struct。有什么方法还是我错过了什么?

例如:

0 投票
1 回答
724 浏览

go - 如果关键测试失败,如何中止测试

在 Go 中,如果其中一个测试失败,有没有办法提前中止一组测试?

我正在使用stretchr/testify套件,但这只是建立在基本的 go测试功能之上。

我考虑过的一些选项:

  • 我查看了设置 testing.failFast 但它没有被导出。
  • 不推荐使用 os.Exit(),因为它可能会弄乱测试输出等。
  • 在第一次失败时停止是不够的,因为第一次失败可能不在关键测试中

我可以添加自己的标志,然后添加到每个测试中:

但这是添加到每个测试中的重复且烦人的样板。我想要的是这样的:

这里有一个常见的做法吗?

0 投票
1 回答
3373 浏览

unit-testing - 使用 testify 两次模拟不同输入和输出的接口方法

如何在 golang 测试中模拟两次接口方法?例如:

当我测试时func GetBookDetail(),我怎样才能模拟Get(key string, data interface{}) error两次?我尝试这样做,但失败了:

在测试中出现如下错误:

差异:

0: PASS: (string=book) 由 func(string) bool 匹配

1: FAIL: (*Book=&{ }) 不匹配 func() bool [恢复]

恐慌:

注意:我使用github.com/stretchr/testify

0 投票
1 回答
204 浏览

go - 没有接收器的模拟功能

我有文件util.go

我正在使用 编写单元测试testify,从Foo. 我想要:

  1. 嘲笑helper
  2. assert mockedhelper被调用了 1 次

我在https://stackoverflow.com/a/19168875/1661745看到了一些有前途的解决方案,但不确定:

方法 1:将 helper 作为参数传递给Foo. 我的疑问:testify 需要一个 Mock 结构来 AssertNumberOfCalls,而这里没有结构。

方法 2:为Foo. 我的疑问:我不知道为 utils 创建一个结构是否有意义。还需要更多的重构,因为调用者Foo需要一个 utils 结构。

最好的方法是什么?

0 投票
1 回答
652 浏览

unit-testing - GoLang Sarama ConsumerGroup 模拟

我是 Go 新手,我也在努力模拟这个电话:sarama.NewConsumerGroup(brokers, group, config)

我正在使用 testify,我的模拟代码目前看起来像:

但我得到了错误:

我相信我错误地嘲笑了电话,但现在确定还能做什么。

0 投票
1 回答
949 浏览

unit-testing - 有没有办法在多次调用函数时每次调用 AssertCalled

我正在尝试使用stretchr/testify对如下代码进行单元测试:

我想调用并AssertCalled验证两者确实是用预期的函数调用的。但是我只能在函数的最后一次调用中断言,即使用. 有什么方法或我可以用它来断言调用吗?data1data2data2data1