-2

我有一个功能说

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()丢失了。我认为这是因为在我的 RunAsync 被存根之前执行了延迟。如何确保所有 Async 函数在执行 defer 之前运行。

4

1 回答 1

1

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

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

于 2018-12-12T21:05:33.750 回答