对 Google Mock 返回的引用所做的更改可以反映在原始值中吗?
示例测试代码(使用 CppUnit 作为单元测试框架):
int i = 0;
EXPECT_CALL(mock, GetValue())
.WillOnce(ReturnRef(i));
...
CPPUNIT_ASSERT_EQUAL( 1, i );
示例代码:
auto x = obj.GetValue();
++x;
我的测试表明这不会更新 的值i
,但谷歌对ReturnRef
and的描述ReturnRefOfCopy
似乎意味着这应该有效,即
- ReturnRef(variable) - 返回对变量的引用。
- ReturnRefOfCopy(value) - 返回对 value 副本的引用;副本与动作一样长。
相反,它似乎ReturnRef
也返回了对副本的引用。有没有办法使用 Google Mock 来获得这种行为?