Пакет gomock предоставляет несколько методов для упорядочивания.
Примечание перед примерами: Используя приведенный вами пример, один раз вызывается first
один раз и возвращает его значения.Он будет помечен как «использованный» и «полный» и больше не будет рассматриваться.
Вам потребуется заново настроить ожидания, если это произошло.
Из документов:
По умолчанию ожидаемые вызовы не выполняются в каком-либо определенном порядке.Зависимость порядка вызова может быть обеспечена использованием InOrder и / или Call.After.Call.After может создавать более разнообразные зависимости порядка вызовов, но InOrder часто более удобен.
Link
Два варианта упорядочивания макетов
Порядок отдельных макетов :
first := mockClient.EXPECT().Do(gomock.Any()).Return(defaultResponse, nil)
second := mockClient.EXPECT().Do(gomock.Any()).Return(defaultResp, nil)
gomock.InOrder(
first,
second,
)
Поскольку макеты принимают абсолютно одинаковые аргументы, вы можете настроить ...
Несколько возвратов потот же макет .
mockClient.EXPECT().
Do(gomock.Any()).
Return(defaultResponse, nil).
Return(defaultResp, nil)