Code
class A {
public:
void doit() {...}
}
class B {
public:
explicit B(unique_ptr<A> a): a_(move(a)) {}
void run() {
a_->doit();
}
private:
unique_ptr<A> a_;
}
Test Code
class MockA : public A {
public:
MOCK_METHOD0(doit, void(void));
}
TEST(BTest, Test) {
auto mockA = std::make_unique<A>();
EXPECT_CALL(*mockA, doit(_)).Times(1);
B b(std::move(mockA));
b.run();
}
When running this code it leaks
ERROR: this mock object (used in test BTest.Test) should be deleted but never is. Its address is @0x1234.
Since expectations are supposed to run during destruction I am not sure why its causing issues.
I tried shared_ptr alias method as described here - Dependency injection with unique_ptr to mock but even still I get that exception.