Winapi HippoMocks-如何模拟Win32 API函数

Winapi HippoMocks-如何模拟Win32 API函数,winapi,mocking,hippomocks,Winapi,Mocking,Hippomocks,HippoMocks文档说它可以模拟C函数,包括WindowsAPI函数,但我找不到任何例子。有人能举一个windows API函数模拟的例子吗 我需要发布一个新版本,这是肯定的 您可以像模拟任何其他函数一样模拟API函数,但不指定要调用它的任何对象(因为它没有任何对象)。我在Linux上用常规的libcapi函数对它进行了很多测试,效果非常好。Windows应该没有什么不同,但这就是为什么我的示例是exit: void test() { MockRepository mocks;

HippoMocks文档说它可以模拟C函数,包括WindowsAPI函数,但我找不到任何例子。有人能举一个windows API函数模拟的例子吗


我需要发布一个新版本,这是肯定的

您可以像模拟任何其他函数一样模拟API函数,但不指定要调用它的任何对象(因为它没有任何对象)。我在Linux上用常规的libcapi函数对它进行了很多测试,效果非常好。Windows应该没有什么不同,但这就是为什么我的示例是exit:

void test() {
    MockRepository mocks;
    mocks.ExpectCallFunc(&exit).With(2).Throw(std::exception());
}
请注意,这适用于任何函数,包括指定永不返回的函数。如果您告诉HippoMocks模拟不应该返回的函数,则返回代码可能没有生成,从而导致错误。尝试抛出特定于测试的异常。现在我想起来了,那是在使用VS2008的Windows上,除了退出调用之外,它实际上没有任何操作码


希望你能让它工作。请确保在Git上使用最新的提交(来自Assembla),因为上一个版本还没有包含此内容。

该项目看起来奄奄一息。你确定你想依靠它吗?是的,看起来是这样。知道任何具有相同功能的替代品吗?当SVN中更新的代码没有在VS2010上编译时,请尽快发布。它还表示ExpectCall()需要两个参数。我第一次给空<代码>mocks.ExpectCall(NULL,CreateFileMapping).Return(无效的\u句柄\u值)其中一个错误是'error C2784:'TCall&MockRepository::RegisterExpect(Z2,Y(u thistCall Z:)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)const,const char*,const char*,unsigned long)“:无法从“int”推断出“Z2*”的模板参数。HippoMocksTest解决方案在VS2008和VS2010上编译并通过了调试和发布模式下的所有48个测试。因此,我使用ExpectCall()的方式有问题。如果我在您的示例中编写代码,编译器会说
没有足够的实际参数用于宏'ExpectCall'
Aah。。。让我检查一下,我可能不得不改变它,因为你显然不能重载宏。有用于析构函数的ExpectCallDestructor(因为您不能获取析构函数的地址,但可以模拟它),用于常规虚拟成员函数的ExpectCall和用于平面函数的ExpectCallFunc。是的,我的错。测试本身在这里:。它有一个本地函数,用另一个返回值替换。我正在用静态方法创建一个类,这些静态方法是围绕windows api函数的包装。你能给我举个例子吗?