相关疑难解决方法(0)

如何使用 gmock 来模拟 std::function?

我的类的构造函数是

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 对象的函数指针?

谢谢!!

testing tdd unit-testing googletest googlemock

5
推荐指数
1
解决办法
5323
查看次数

如何在运行时使用 GoogleMock 在 C++ 单元测试中模拟系统调用?

我有一个用 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)

c c++ unit-testing googletest googlemock

3
推荐指数
1
解决办法
3285
查看次数

标签 统计

googlemock ×2

googletest ×2

unit-testing ×2

c ×1

c++ ×1

tdd ×1

testing ×1