小编Rod*_*los的帖子

谷歌模拟ByRef方法

我有一个类,它接受一个布尔作为引用参数并返回一个整数:

class Foo
{
  public:
    Bar my_bar;
    virtual int myMethod(bool &my_boolean) = 0;
}

/*...*/

int Foo::myMethod(bool &my_boolean){
  if (my_bar == NULL){
    my_boolean = false;
    return -1;
  }
  else{
    my_boolean = true;
    return 0;
  }

}
Run Code Online (Sandbox Code Playgroud)

我为这个类创建了一个模拟:

class MockFoo : public Foo
{
   MOCK_METHOD1(myMethod,int(bool &my_boolean));
}
Run Code Online (Sandbox Code Playgroud)

我在如何设置这种函数的期望方面存在问题,因为我需要将返回值引用参数设置为特定值以正确创建我的单元测试.如何使用gmock处理这种​​函数?我尝试按照我认为的文档解决方案:

using ::testing::SetArgPointee;

class MockMutator : public Mutator {
  public:
  MOCK_METHOD2(Mutate, void(bool mutate, int* value));
  ...
};
  ...

MockMutator mutator;
EXPECT_CALL(mutator, Mutate(true, _))
  .WillOnce(SetArgPointee<1>(5));
Run Code Online (Sandbox Code Playgroud)

但要么我不明白这个例子,要么就不适用于这个案子.有没有人以前处理过这种情况?

提前致谢.

c++ googletest gmock

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

gmock ×1

googletest ×1