在Hippomocks的官方版本3.1(https://www.assembla.com/spaces/hippomocks/wiki/Home)中曾经有一个MockRepository::ClassMock
来构建模拟对象(与MockRepository::InterfaceMock
相反而不是),这在非常有用的时候非常有用。处理非虚拟类方法。
当前版本的MockRepository::Mock
执行MockRepository::InterfaceMock
在我看来所做的事情。是否有可能使用当前版本构建模拟对象?
我没有使用版本3.1的基本原理:我还需要非常有用的ExpectCallFunc来测试不属于稍后介绍的类的函数。
不使用贴图新的基本原理:Placement new会在被Hippomocks嘲笑后构建对象,从而“重置”之前由Hippomocks改变的虚拟函数表。
答案 0 :(得分:2)
不,没有。您现在可以模拟方法和成员,据我所知,应该捕获您的类需要存在的所有情况。您可以使用MockRepository::MemberMock(obj, &Class::iValue)
初始化该成员。
如果你真的需要ClassMock
,最好先考虑为什么需要它;在干净的TDD中,它从来没有必要,因此可能需要重构以避免这种情况。然后,您还可以向后移植ExpectCallFunc
;它是一个相当独立的功能,所以它应该合理地向后移植。如果你这样做,请从Github获取当前的git版本,因为它已经验证了Linux / Windows / Mac X86和X86-64以及Raspbian / ARM的C方法模拟。