const std::wstring tesName[3] = { L"Final", L"Partial", L"Best"};
我的gtest将调用函数GetName()
数百次。
所以我希望GetName()
的模拟函数能够像这样返回:
int i = 0;
EXPECT_CALL(*my_mock, GetName()).Times(AtLeast(1)).WillRepeatedly(Return(tesName[(i++)%3]));
它始终可以将名称从数组tesName
返回Final
到Partial
再到Best
,然后再从Final
开始。但上面的代码不起作用。我怎么能这样做?
无论我是本地变量还是我的gtest类的成员变量,上面的代码都不起作用。
在gmock文件中:
using testing::ReturnPointee;
...
int x = 0;
MockFoo foo;
EXPECT_CALL(foo, GetValue())
.WillRepeatedly(ReturnPointee(&x)); // Note the & here.
x = 42;
EXPECT_EQ(42, foo.GetValue()); // This will succeed now.
但我不知道如何将它应用到我的案例中。
答案 0 :(得分:0)
如果您事先知道应该调用该方法的次数n
,您可以执行以下操作:
{
InSequence s;
for (int i = 0; i < n; i++) {
EXPECT_CALL(*my_mock, GetName())
.WillOnce(Return(tesName[i % 3]))
.RetiresOnSaturation();
}
}