![](/img/trans.png)
[英]How do I return an error code in C when the return type of the function doesn't allow me to do that?
[英]how to return the error code when mocking a recvmsg function?
我正在使用 google test 和 google mock 来测试一些 C 代码:
struct msghdr message;
int retval;
retval = recvmsg(fd,&message,0);
if(retval == EINTR || retval == EAGAIN)
{
// do something here
}
在我的模拟文件中,我模拟了recvmsg
函数:
MOCK_CONST_METHOD3(recvmsg, int(int fd, struct msghdr *msg, int flags));
但是当我将模拟函数recvmsg
的返回值设置为 -1 时,如何将errno
为 EINTR 或EAGAIN
?
Google Mock docs 中有一个名为SetErrnoAndReturn(errnum, value)
的标准操作。
您不能模拟自由函数,而只能模拟虚拟成员函数。
文档中模拟自由函数的建议解决方案是定义一个接口,导出与自由函数具有相同签名的虚拟成员函数。 然后定义一个实现,该实现包含对生产代码的自由函数的调用和用于测试的模拟。 因此,如果您的测试代码是纯 C 语言,则它不是适合您的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.