【发布时间】:2018-02-20 08:53:52
【问题描述】:
我在使用golang的时候,有时候需要在goroutine中测试一下结果,我是用time.Sleep来测试的,不知道有没有更好的测试方法。
假设我有一个这样的示例代码
func Hello() {
go func() {
// do something and store the result for example in db
}()
// do something
}
然后当我测试 func 时,我想在 goroutine 中测试两个结果, 我正在这样做:
func TestHello(t *testing.T) {
Hello()
time.Sleep(time.Second) // sleep for a while so that goroutine can finish
// test the result of goroutine
}
有没有更好的测试方法?
基本上,在真正的逻辑中,我不关心 goroutine 中的结果,我不需要等待它完成。但在测试中,我想在它完成后检查。
【问题讨论】:
-
我听说过使用上下文,但找不到与我的用例类似的确切示例
-
我不太明白您要做什么。为什么要在 goroutine 中设置
b?如果您不想使用睡眠,请使用等待组。 stackoverflow.com/questions/19208725/… -
对不起,我觉得我的例子很混乱,我改变了我的例子