我的类的构造函数是
A( ...
std::function<bool(const std::string&, const std::string&)> aCallBack,
... );
Run Code Online (Sandbox Code Playgroud)
我想用 EXPECT_CALL 来测试它。这个回调来自另一个 B 类。我创建了一个 Mock 像
class BMock : public B
{
MOCK_METHOD2( aCallBack, bool(const std::string&, const std::string&) );
}
Run Code Online (Sandbox Code Playgroud)
然后我试过了
B *b = new B();
std::function<bool(const std::string&, const std::string&)> func =
std::bind(&B::aCallBack, b, std::PlaceHolders::_1, std::PlaceHolders::_2);
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用。如何获取 gmock 对象的函数指针?
谢谢!!
我有一个用 C 编写的模块。其中我的 API 定义如下。
int ReadData(void* data, int data_size, char* filename, int offset)
Run Code Online (Sandbox Code Playgroud)
在执行单元测试以覆盖完整覆盖范围时,我需要遇到 fseek 和 fread 系统调用的错误条件。有人可以解释一下我如何在特定测试用例期间重写 fseek/fread ,以便它不会为该测试用例调用模拟 fseek/fread ,而不是系统调用?
ReadAPI.c
Run Code Online (Sandbox Code Playgroud)
#include<stdio.h>
#include<stdlib.h>
int readdata(void* data,int size, int offset, char* filename)
{
if(data == NULL || size == 0 || filename == NULL)
{
return -1;
}
FILE* fp = fopen(filename,"rb");
if(fp == NULL)
{
return -1;
}
if(fseek(fp,offset,SEEK_SET) != 0)
{
fclose(fp);
return -1;
}
fread(data,size,1,fp);
if(ferror(fp))
{
fclose(fp);
return -1;
}
fclose(fp);
return 1;
} …Run Code Online (Sandbox Code Playgroud)