Я прочитал раздел в поваренной книге gmock, посвященный насмешливым деструкторам, но я Мне не повезло заставить его работать. Мой код почти точно соответствует тому, что говорит документ:
class MockFoo : public Foo {
public:
MockFoo() {}
MOCK_METHOD0(destroyMockFoo, void());
virtual ~MockFoo() { destroyMockFoo(); }
};
TEST_F(DestructorTest, shouldFail) {
MockFoo* foo = new MockFoo();
EXPECT_CALL(*foo, destroyMockFoo());
}
Но когда я запускаю код, тест проходит без ошибок. Я получаю сообщение об ошибке в конце тестового вывода об утечке объекта:
DestructorTest.cpp:149: ERROR: this mock object (used in test DestructorTest.shouldFail) should be deleted but never is. Its address is @0x8178790.
ERROR: 1 leaked mock object found at program exit.
но это не то, что я хочу, и это не то, что, по словам доктора, должно произойти.
Так что я делаю неправильно?