英文:
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())
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论