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