#include "gtest/gtest.h" #include "gmock/gmock.h" // Simple test, does not use gmock TEST(Dummy, foobar) { EXPECT_EQ(1, 1); } // Real class we want to mock class TeaBreak { public: virtual ~TeaBreak() {} // Return minutes taken to make the drinks int morningTea() { return makeCoffee(true, 1) + makeCoffee(false, 0.5) + makeHerbalTea(); } private: virtual int makeCoffee(bool milk, double sugars) = 0; virtual int makeHerbalTea() = 0; }; // Mock class class MockTeaBreak : public TeaBreak { public: MOCK_METHOD2(makeCoffee, int(bool milk, double sugars)); MOCK_METHOD0(makeHerbalTea, int()); }; using ::testing::Return; using ::testing::_; // Mocked test TEST(TeaBreakTest, MorningTea) { MockTeaBreak teaBreak; EXPECT_CALL(teaBreak, makeCoffee(_,_)) .WillOnce(Return(2)) .WillOnce(Return(1)); EXPECT_CALL(teaBreak, makeHerbalTea()) .WillOnce(Return(3)); EXPECT_LE(teaBreak.morningTea(), 6); }