google 模拟 EXPECT_CALL return 值

google mock EXPECT_CALL return value

我在 C 中有以下代码想使用 google 测试框架进行测试:

a.h

void getValue(int age, int * value);

a.c

#include <a.h>

void getValue(int age, int * value)
{
   value[0] = 0;
   value[1] = 1;
}

b.c

#include <a.h>

void formValue()
{
   int value[2];
   getValue(age, value);

   /* the code to handle the value[] array */
   /* for() */
}

我想测试文件 b 中的函数 void formValue(),所以我为 void getValue(int age, int * value) 创建了以下模拟: // AFileMock.hh #包括 #include "a.h"

class AFileMock {
  public:
    AFileMock();
    ~AFileMock();
    MOCK_METHOD1(getValue, void(int, int *));
};

然后在测试文件中我想调用模拟函数 getValue 和 return void getValue(int age, int * value) 部分的值,但是如何 return 出来调用模拟函数时 value array 的参数?

#include "gmock/gmock.h"
#include "gtest/gtest.h"

#include <b.h>
#include <AFileMock.h>

using testing::_;
using testing::Return;
using testing::InSequence;

class BTest: public testing::Test {

protected:
   AFileMock aFile;

public:
   void SetUp() { }
   void TearDown() { }
};


TEST_F(BTest, test1)
{
   InSequence sequence;
   EXPECT_CALL(aFile, getValue(_, _)).
      Times(1); // when this mock function is called, how to return the value of the array?

   formValue();
}

那么在这种情况下,调用mock函数时,如何return数组的值呢?

我无法理解您的示例代码,a.c 甚至无法编译。但我想你正在寻找的答案是 Gmock Actions. A rich set 提供了。