Могу ли я использовать EXPECT_CALL, чтобы проверить, вызывает ли конструктор фиктивного объекта функцию-член определенное время? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть класс, конструктор которого вызывает функцию-член, которая в свою очередь вызывает другие функции-члены.Я хочу использовать GMock для создания фиктивного класса и проверки того, что, когда создается фиктивный объект класса, эти функции-члены вызывались ровно один раз во время конструирования.Но я наблюдаю следующую дилемму:

  • С одной стороны, согласно GMock Dummy doc , «Google Mock требует установки ожиданий перед вызовом фиктивных функций.иначе поведение не определено. "Поэтому перед вызовом конструктора объекта необходимо вызвать EXPECT_CALL ().

  • С другой стороны, EXPECT_CALL () нуждается в объекте в качестве первого аргумента, поэтому мы должны сконструировать объектпрежде чем мы сможем установить ожидание.

Правильно ли вышеприведенное наблюдение и, если да, есть ли еще способ достичь того, что я надеюсь сделать?

1 Ответ

1 голос
/ 11 июля 2019

Похоже, вы собираетесь закончить тестирование макета своего класса, но это не очень полезно. По умолчанию имитируемый конструктор не будет вызывать функции-члены, поэтому ваши EXPECT_CALL() должны быть соединены с принудительным вызовом Mock для выполнения этих вызовов функций. Бесполезная ситуация для включения поведения вашего кода в автоматизированную систему тестирования.

Вместо того, чтобы пытаться проверить детали реализации вашего класса, можете ли вы создать объект и использовать EXPECT вызовы открытого интерфейса, чтобы убедиться, что конструктор поместил объект в правильное состояние?

...