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



我有一个函数,比如

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

我必须为Myfunction()编写一个测试用例。我正在使用go mock。还嘲笑了x

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

现在的问题是我的测试成功运行,但不知怎么的,最后它惊慌失措地说,对mockX.RunAsync()的调用丢失了。我认为这是因为defer是在我的RunAsync被存根之前执行的。如何确保在执行defer之前运行所有异步函数。

如果测试double被用作存根,那么你应该在它上调用.AnyTimes()。这样,gomock就不在乎go例程是否完成了。

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

相关内容

  • 没有找到相关文章

最新更新