0

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

4

2 回答 2

0

由于我很久没有使用 Hippomocks,所以在我的记忆中挑选,我无法给出确切的语法,但这就是 HippomocksDo()方法的用途。

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

于 2020-09-23T11:28:57.877 回答
0

您可以为功能做到这一点

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 时会抱怨类型。)

于 2022-01-28T15:18:58.080 回答