首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用银杏/gomega测试无限循环/递归?

如何用银杏/gomega测试无限循环/递归?
EN

Stack Overflow用户
提问于 2022-01-11 13:13:49
回答 1查看 245关注 0票数 2

我有一个golang函数,它递归地遍历json字符串,并用它们所引用的json文档替换自定义引用。我只是注意到我忘记处理循环引用,它的出现将导致无休止的递归。在修复这个问题之前,我想为这个例子编写一个测试(使用ginkgo/gomega),这样我就可以验证我的解决方案是否有效,并且我会注意到我是否会破坏它并再次遇到这个问题。

但是我怎么做像if this function call does not return within <timeout>, abort it and fail the test这样的事情?

Gomega的Eventually有一个超时,但是如果它已经在运行,它不会中止该函数,所以在本例中它将永远阻塞。

我找到了这个例子,用于检查如何使用select和通道检查超时,但据我所知,不可能从外部终止goroutine --所以我的函数将继续在后台运行,占用资源?

检查无限递归的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 13:15:57

不能中止正在运行的函数。该功能必须支持堕胎,特别是通过一个context.Context或一个通道。如果您想支持超时或堕胎,您必须更改/重构您的函数。函数本身必须支持这一点,例如,如果请求取消,它必须监视context.Context并尽早返回。有关详细信息和示例,请参见如果上下文被取消,则终止函数执行

见有关:

取消Go中的阻塞操作

取消用户特定的goroutines

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70667439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档