IEmployeeServiceProxy* empSvcMock = m_Mocks.InterfaceMock<IEmployeeServiceProxy>();
m_EmpSvcMock.reset(empSvcMock); // shared_ptr because my class Client ctor expects a shared_ptr<IEmployeeServiceProxy>
Client client(m_EmpSvcMock);
如何防止m_EmpSvcMock被HippoMock內部破壞?將模擬傳遞給shared_ptr時,兩者都會破壞模擬。HippoMocks堅持摧毀模擬
編輯 - 答:
m_Mocks.ExpectCallDestructor(m_EmpSvcMock.get());
m_EmpSvcMock.reset();
所以當把模擬傳給shared_ptr時,我們應該簡單地註冊一個NOP析構函數?你能舉個例子嗎? – 2012-08-02 07:57:29
+1這聽起來很有意思 – stijn 2012-08-02 07:59:19
將它傳遞給共享指針時,您希望在測試結束時但在驗證模擬之前調用析構函數。所以,告訴模擬庫,你很好。這是它的單元測試http://www.assembla.com/code/hippomocks/git/nodes/master/HippoMocksTest/test_zombie.cpp,它明確地刪除它,但這相當於最後一個被破壞的共享指針。 – dascandy 2012-08-02 08:03:23