0

在 Hippomocks 的官方 3.1 版(https://www.assembla.com/spaces/hippomocks/wiki/Home)中,曾经有一个MockRepository::ClassMock构造模拟对象(与之相反MockRepository::InterfaceMock),这在处理时非常有用使用非虚拟类方法。

当前版本的MockRepository::Mock功能MockRepository::InterfaceMock与我认为的相同。是否有可能使用当前版本构造模拟对象?

我不使用 3.1 版本的理由:我需要也非常有用的 ExpectCallFunc 来测试不属于稍后介绍的类的函数。

不使用placement new 的理由:placement new 将在被Hippomocks 模拟后构造对象,从而“重置”先前由Hippomocks 更改的虚函数表。

4

1 回答 1

2

不,没有。您现在可以模拟方法和成员,据我所知,它们应该可以捕获您的类需要存在的所有情况。您将用于MockRepository::MemberMock(obj, &Class::iValue)初始化成员。

如果你真的需要ClassMock,最好先想想你为什么需要它;在干净的 TDD 中,它从来没有必要,所以可能需要重构一些东西来避免这种情况。再说一次,你也可以 backport ExpectCallFunc;它是一个相当独立的功能,因此它应该可以合理地向后移植。如果你这样做了,请从 Github 获取当前的 git 版本,因为它已经验证了 Linux/Windows/Mac X86 和 X86-64 以及 Raspbian/ARM 上的 C 方法模拟。

于 2014-01-19T22:11:18.397 回答