在 Google 测试框架中,如何期待一个函数调用或另一个函数调用?

In Google Test Framework, how to expect a function call OR another function call?

如何将两个 EXPECT_CALL 宏放入逻辑或中?由于外部因素,我的测试可能会导致调用 on_found() 或调用 on_not_found() 的函数。对于我的测试范围是相同的,因为重要的是已经进行了搜索。但我无权访问内部 search() 函数并希望调用它。

您可以在测试中添加一些布尔变量,并在调用 on_found()on_not_found() 时使它们为真,并在测试结束时检查变量的逻辑或。例如,

auto onFoundCalled = false;
auto onNotFoundCalled = false;
EXPECT_CALL(mockObj, on_found())
    .Times(AtMost(1)).WillRepeatedly(InvokeWithoutArgs([&onFoundCalled]
{
    onFoundCalled = true;
}));
EXPECT_CALL(mockObj, on_not_found())
    .Times(AtMost(1)).WillRepeatedly(InvokeWithoutArgs([&onNotFoundCalled]
{
    onNotFoundCalled = true;
}));

RunSomeCode();

ASSERT_TRUE(onFoundCalled || onNotFoundCalled);