Как убедиться, что все функции асинхронного запускаются до выполнения отложенного
У меня есть функция сказать
Myfunction() {
x.RunAsync() //Async Function call
}
Я должен написать контрольный пример для Myfunction()
, Я использую для этого идиотскую игру. И издевались x
,
Test_MyFunction() {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
//EXPECT() call to stub RunAsync()
}
Проблема сейчас в том, что мой тест проходит успешно, но как-то в конце он паникует, говоря, что вызов mockX.RunAsync()
пропал, отсутствует. Я думаю, что это потому, что отсрочка выполняется до того, как мой RunAsync был заглушен. Как я могу убедиться, что все функции Async выполняются до выполнения отложенного выполнения.
1 ответ
Если тестовый двойник используется в качестве заглушки, то вам следует позвонить .AnyTimes()
в теме. Таким образом, Гомоку не будет важно, закончилась ли рутина или нет.
Однако, если вы хотите сделать на нем утверждения (и, следовательно, это имитация, а не заглушка), то вам нужно убедиться, что процедура go выполнена, прежде чем позволить тесту завершиться.