Hippomocks 指针参数 - 提供输入,检查输出

Hippomocks pointer argument - provide input, check output

我有一个函数需要在指针参数中输入缓冲区长度,然后将读取的字节数放入与输出相同的参数中。现在在我的单元测试中,我尝试用 Hippomocks 模拟它,并想检查是否使用正确的输入值调用函数,同时提供不同的输出值。我怎么能做到这一点? 谢谢!

由于我已经很长时间没有使用 Hippomocks 了,所以我无法给出确切的语法,但这就是 Hippomocks 的 Do() 方法的用途。

在 Hippomocks 的测试套件中,您可以找到带有 lambda 表达式的用法示例:https://github.com/dascandy/hippomocks/blob/master/HippoMocksTest/test_do.cpp#L20.

功能可以做到

void addingFunc(const int* inputArg_p, int* returnArg_p)
{
    *returnArg_p = *inputArg_p +1;
}

const int expected = 42;
int readbackActual = 0;
int readbackActual_p = &readbackActual;
const int writeValue = 1;
const int* writeValue_p = writeValue;

mocks.ExpectFuncCall(someFunc).With(Out(writeValue_p), In(readbackActual_p ); //Writes writeValue into *inputArg_p, then writes *returnArg_p into *readbackActual_p.

funcUnderTest(); //Function which uses addingFunc somehow.

ASSERT("FooBarError", expected == readbackActual); //Will fail: 42 is unequal to 1+1  !

(使用这些不漂亮的指针是因为 Hippomocks 在直接使用 &readbackActual 时抱怨类型。)