gpt4 book ai didi

unit-testing - 如何确保所有异步函数在执行 defer 之前运行

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:39 26 4
gpt4 key购买 nike

我有一个函数说

Myfunction() {  
x.RunAsync() //Async Function call
}

我必须为 Myfunction() 编写一个测试用例。我正在为此使用 go-mock。还有 mocked x

Test_MyFunction() {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
//EXPECT() call to stub RunAsync()
}

现在的问题是我的测试运行成功,但不知何故最后它 panic 地说,对 mockX.RunAsync() 的调用丢失了。我认为这是因为在我的 RunAsync 被 stub 之前正在执行延迟。如何确保所有 Async 函数在执行 defer 之前运行。

最佳答案

如果测试替身被用作 stub ,那么您应该对其调用 .AnyTimes()。这样 gomock 就不会关心 go 例程是否完成了。

但是,如果您想对其进行断言(因此它是一个模拟而不是 stub ),那么您需要确保在让测试完成之前执行了 go 例程。

关于unit-testing - 如何确保所有异步函数在执行 defer 之前运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53751228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com