首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HippoMocks坚持销毁mock

HippoMocks坚持销毁mock
EN

Stack Overflow用户
提问于 2012-08-02 15:31:52
回答 2查看 1K关注 0票数 3
代码语言:javascript
复制
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);

如何防止HippoMock在内部销毁m_EmpSvcMock?当将模拟传递给shared_ptr时,两者都会破坏模拟。

编辑-回答:

代码语言:javascript
复制
m_Mocks.ExpectCallDestructor(m_EmpSvcMock.get());
m_EmpSvcMock.reset();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-02 15:53:02

在Git版本(来自Assembla)中,您可以告诉它注册一个要调用的析构函数。额外的好处是,它将警告你调用了函数之后,通过一个ZombieMockException,所以如果你确实泄漏了某个地方的指针,它被使用了,你将知道一个可读的错误。

票数 2
EN

Stack Overflow用户

发布于 2012-08-02 15:37:42

使用像这样的帮助器,它创建一个带有no-op deleter的shared_ptr:

代码语言:javascript
复制
template< class T >
void NoDelete( T* )
{
}

template< class T >
std::shared_ptr< T > make_shared_ref( T* t )
{
  return std::shared_ptr< T >( t, NoDelete< T > );
}

  //usage
m_EmpSvcMoc = make_shared_ref( empSvcMock );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11772911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档