如何解决如何在 gmock 模拟方法中处理参数
我有一个方法可以取出一个参数(即对 uint64_t 的引用)我如何在 Gmock 中模拟这个?此外,在调用此方法时,我想将传入引用的值设置为我想要的值。这可以通过 Gmock 实现吗?
解决方法
是的,这是一个最小的例子:
struct Iface {
virtual ~Iface() = default;
virtual void foo(uint64_t& a) = 0;
};
struct Mock : public Iface {
MOCK_METHOD1(foo,void(uint64_t& a));
};
TEST(MockTest,TestSetArgReferee) {
uint64_t some_val = 0;
Mock some_mock{};
EXPECT_CALL(some_mock,foo(testing::_)).WillOnce(testing::SetArgReferee<0>(42));
some_mock.foo(some_val);
ASSERT_EQ(42U,some_val);
}
这里的关键是 SetArgReferee
,它设置了 foo
的第 i 个参数(从 0 开始索引,所以 SetArgReferee<0>
设置了模拟方法的第一个参数,SetArgReferee<1>
设置了第二个参数arg 等)。有关详细信息,请参阅 cookbook。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。