如何期望模拟蜂以正确的顺序被调用

时间:2018-08-08 09:54:02

标签: c++ gmock

给出以下非常简单的功能进行测试

class Actor {
 public:
  virtual void doo(int i) = 0;
};

class Sensor {
 public:
  virtual int goo() = 0;
};

void foo(int reps, Actor* actor, Sensor* sensor);

我想测试foo函数,该函数从传感器请求一个值,并使用该值调用actor。重复reps次。

现在我要测试,foo用正确的值(由传感器返回)调用actor

测试代码如下:

MockActor actor;
  MockSensor sensor;

  // InSequence s;

  EXPECT_CALL(sensor, goo()).WillOnce(Return(3)).WillOnce(Return(1)).WillOnce(Return(3));

  EXPECT_CALL(actor, doo(3)).Times(1).RetiresOnSaturation();
  EXPECT_CALL(actor, doo(1)).Times(1).RetiresOnSaturation();
  EXPECT_CALL(actor, doo(3)).Times(1).RetiresOnSaturation();

foo(3, &actor, &sensor);

但是现在不检查3,1,3的顺序。 如果我取消对InSequence的注释,即使顺序正确,我也总是会出错。我做错了什么?

PS。完整的代码可以在这里找到:https://github.com/lochbrunner/eval-gmock

0 个答案:

没有答案