Как убедиться, что все функции асинхронного запускаются до выполнения отложенного

У меня есть функция сказать

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 выполнена, прежде чем позволить тесту завершиться.

Другие вопросы по тегам