Использование gmock для внешних зависимостей

Как смоделировать внешнюю зависимость CustomStream здесь с помощью gmock или gtest?

#include <mylib/common/CustomStream.h>

namespace sender {
void Send(int p1){
mylib::common::CustomStream stream;
stream << p1;
}
}

1

Решение

Сделайте так, чтобы CustomStream наследовал от чисто виртуального интерфейса. Затем вставьте тест double в качестве зависимости в функцию. Например:

namespace mylib {
namespace common {

class OutputStream {
virtual void Output(int value) = 0;
OutputStream& operator<<(int value) { this->Output(value); return *this; }
};

class CustomStream : public OutputStream {
virtual void Output(int value) { /*...*/ };
};

}
}

namespace sender {
void Send(OutputStream& stream, int p1) {
stream << p1;
}
}

namespace tests {

class MockOutputStream : public mylib::common::OutputStream {
MOCK_METHOD1(Output, void (int value));
};

TEST(testcase) {
MockOutputStream stream;
EXPECT_CALL(stream, Output(2));
sender::Send(stream, 2);
}

}

Но, конечно, поместите каждый класс в отдельный заголовочный файл. И иметь функцию («Отправить») без класса тоже не очень хорошая идея, но я предполагаю, что это наследие.
(Примечание. Я не пытался это скомпилировать. Это синтаксис Google Mock + Test-ish.)

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]