0
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_;
}
테스트 코드
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();
}
이 코드를 실행하기가
ERROR 누수 때
이 모의 객체를 (테스트 BTest.Test에 사용) 삭제해야하지만 절대로 없어야합니다. 주소는 @ 0x1234입니다.
파괴가 진행되는 동안 예상이 실행되기 때문에 그 원인을 알지 못합니다.
여기에 설명 된대로 shared_ptr 별칭 메서드를 시도했는데 (Dependency injection with unique_ptr to mock) 그래도 여전히 예외가 발생합니다.
@jack_carver 같은 점 : doIt()은 가상이 아닙니다. –