【问题标题】:Mock method implementation using Google Mock使用 Google Mock 实现 Mock 方法
【发布时间】:2016-02-22 00:31:55
【问题描述】:

我正在使用 Google Mock 模拟 Arduino millis 方法。此方法返回自设备启动以来的毫秒数。我想在每次方法调用时返回增加的数字(范围从 0 到 Infinity)。

到目前为止,我是这样模拟这个函数的:

EXPECT_CALL(*arduino, millis())
  .WillOnce(Return(0))
  .WillOnce(Return(1))
  .WillOnce(Return(2))
  // and so on...

但这是不切实际的。有没有更好的方法可以处理无数次调用?

【问题讨论】:

    标签: c++ unit-testing googletest googlemock gmock


    【解决方案1】:

    您可以编写一个返回递增数字的自定义操作并在WillRepeatedly 中使用它:

    ACTION(ReturnIncreasingIntegers) {
        static int n = 0;
        return ++n;
    }
    
    EXPECT_CALL(*arduino, millis())
        .WillRepeatedly(ReturnIncreasingIntegers());
    

    但我建议不要这样做。您的测试的确定性越低,就越难理解被测代码的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多