Насколько мне известно, у вас есть хорошо определенное поведение. Насколько я могу судить, все, что делает макрос MOCK_METHOD
, это подключает прототип метода и другие элементы, необходимые для установки ожиданий. Таким образом, хотя семейство макросов MOCK_METHOD
находит применение главным образом при разработке фиктивных классов, производных от классов, которые требуют тестирования, само ваше фактическое использование кажется мне вменяемым.
Несмотря на то, что гугл-макеты аккуратны, вы можете легко написать свои собственные методы макетов без особых усилий, если найдете, что кто-то жаловался на это в обзоре кода.
struct MockObject {
void onRecv(void* buffer, size_t len) {
buf_ = buffer;
len_ = len;
onRecvCallCount_++;
}
void * buf_;
size_t len_;
int onRecvCallCount_ = 0;
};
// actual test setup being
void Setup() {
mockObject.onRecvCallCount_ = 0
}
// The rest of the assertions/expectations get wrapped inside the
// if (mockObject.onRecvCallCount_) { } block
Таким образом, макеты Google Mock сохраняют всю эту дополнительную проводку, необходимую для установки ожиданий, предоставляя простые макросы, такие как MOCK_METHOD
. Так что не стесняйтесь использовать его.