我正在使用Google Test测试C代码,但是我遇到了一个问题"为系统函数编写存根",如:fopen,fclose,fread,fwrite,memcpy,memset,stat等。我不知道如何正确地编写存根以便于测试其输入/输出,而无需担心真实数据。以下是示例:
bool open_file(void)
{
FILE *srcfd;
FILE *destfd;
int dataLen;
bool retVal=false;
char buffer[255];
srcfd = fopen("srcFileName", "r");
if(NULL != srcfd)
{
destfd = fopen("destFileName", "w+");
if(NULL != destfd)
{
retVal = true;
while ((true == retVal) &&
((dataLen = fread(buffer, sizeof(char), sizeof(buffer), srcfd)) > 0))
{
if (fwrite(buffer, sizeof(char), dataLen, destfd) != dataLen)
{
retVal = false;
}
}
fclose(destfd);
}
else
{
printf("%s: Failed to create file '%s'...\n",
__func__, "destFileName");
}
fclose(srcfd);
}
else
{
printf("%s: Failed to create file '%s'...\n", __func__, "srcFileName");
}
return retVal;
}