Gomega是否支持验证多个不同类型的返回值,其中最后一个不是`error`?

huangapple go评论90阅读模式
英文:

Can Gomega support verification of multiple return values of different types where the last one is not `error`?

问题

例如:
如果我有一个对https://pkg.go.dev/sync#Map.Load进行封装的函数:
具有相同的方法签名:

func Load(key string) (value interface{}, ok bool)

在https://stackoverflow.com/questions/49828807/can-gomegas-equal-handle-multiple-values类似的问题中,有人提出了类似的问题,并且回答是将返回值放入单个数据结构中。如果是这种情况,如果我不想根据单元测试框架的限制来调整(生产)代码,该怎么办?

英文:

For instance:
If I have a wrapper for https://pkg.go.dev/sync#Map.Load:
with the same method signature:

func Load(key string) (value interface{}, ok bool)

in https://stackoverflow.com/questions/49828807/can-gomegas-equal-handle-multiple-values similar question was asked and the response is to put the return values into single data structure. If that is the case, what if I don't want to adapt the (production) code based on this limitation of the unit test framework?

答案1

得分: 1

可以用几行代码完成。

	value, ok := m.Load(key)
	Expect(value).NotTo(BeNil())
	Expect(ok).To(BeTrue())

这段代码的作用是从映射 m 中加载键 key 的值,并进行断言检查。首先,value, ok := m.Load(key) 语句将键 key 的值加载到变量 value 中,并将加载操作的结果(是否成功)加载到变量 ok 中。然后,Expect(value).NotTo(BeNil()) 断言检查 value 不为空。最后,Expect(ok).To(BeTrue()) 断言检查 ok 的值为真。

英文:

Can be done in several lines.

		value, ok := m.Load(key)
		Expect(value).NotTo(BeNil())
		Expect(ok).To(BeTrue())

huangapple
  • 本文由 发表于 2022年11月6日 07:47:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/74332281.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定