HippoMocks坚持要摧毁Mock
HippoMocks insists on destroying mock
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被河马内部破坏?将模拟传递给shared_ptr时,两者都会破坏模拟。
编辑 - 答案:
m_Mocks.ExpectCallDestructor(m_EmpSvcMock.get());
m_EmpSvcMock.reset();
在 Git 版本(来自 Assembla(中,您可以告诉它注册要调用的析构函数。额外的好处是,它会警告你之后使用ZombieMockException调用的函数,所以如果你确实在某处泄漏了一个指针并且它被使用,你会知道一个可读的错误。
使用如下帮助程序,它会创建一个带有无操作删除器的shared_ptr:
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 );
相关文章:
- 如何使用Google Mock来模拟gettimeofday()
- gmock / google-mock发出警告,并且通过模拟异常未通过测试
- MOCK一个接受unique_ptr的方法
- 如何期望通过使用Google Test(Mock)以特定频率调用函数
- 静态指针指向这个为mock for googletest定义的类内部
- Google Mock:在目标类的构造函数中实例化的模拟私有变量成员
- 摧毁一个不可破坏的基类?
- 为什么父母的方法在孩子被摧毁后仍然存在
- C++:摧毁自己体内的lambda
- Google Mock Expect_call将退休另一个期望
- Google-Mock 一个已经声明的方法
- C 17:一个临时对象从未被摧毁
- C - 何时被摧毁
- 如何使用shared_ptr从外部提供mock对象
- Google Mock - 使用 CoTaskMemFree 时,测试返回没有结果
- 如何在内联回调函数中使用EXPECT_EQ和其他Google Mock语句
- Qthread char阵列在两个线程之间传递后被摧毁
- C Google Mock -Expect_Call() - 期望在不直接调用时无法正常工作
- Qlineedit在他的父母面前摧毁了
- HippoMocks坚持要摧毁Mock