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