带有附带条件的GMocking函数调用

问题描述 投票:0回答:1

我希望当变量“a”等于42时调用类“foo”的函数“bar”。

以下被测代码应导致不饱和的期望/失败的测试:

int a = 41;
foo.bar();

以下被测代码应该会导致测试成功:

int a = 41;
a++;
foo.bar();

如何使用 Googlemock 来完成此操作?我考虑了以下方法,但找不到合适的匹配器。

EXPECT_CALL(mock,foo).With(someMatcher)
unit-testing googlemock
1个回答
0
投票

我会做这样的

#include <gmock/gmock.h>

#include <iostream>

class foo : public ::testing::Mock {
 public:
  MOCK_METHOD(void, bar, ());
};

int a = 41;

TEST(Test, Case) {
  foo mock;
  EXPECT_CALL(mock, bar()).WillOnce([] {
    if (a != 42) FAIL();
  });

  a++;
  mock.bar();
}

https://godbolt.org/z/edKKo738n

© www.soinside.com 2019 - 2024. All rights reserved.