Gmock 的EXPECT_CALL 中是否有<Do-nothing> 类操作?
Is there a <Do-nothing> kind of action in the EXPECT_CALL of Gmock?
SUT 正在调用定义了 EXPECT_CALL 的外部库。
我只想在第一次调用该函数时做一些事情,而忽略其他时间做任何事情(但要检查它是否被调用了两次);反之亦然.. 即第一次调用时不执行任何操作,第二次调用时不执行任何操作。
// Code for the Expect Call
EXPECT_CALL(*mock_ptr, some-function(_,_)) .Times(2) .WillOnce(action1)
.WillOnce(do-nothing);
// SUT call
ASSERT_NO_THROW(sut_function(arg1, arg2));
忽略第二个(不执行任何操作)WillOnce,我收到如下 Gmock 警告:
GMOCK WARNING: test_blah-blah.cpp:321: Too few actions specified in
EXPECT_CALL(*mock_ptr, some-function(,))... Expected to be called
twice, but has only 1 WillOnce(). GMOCK WARNING:
test_blah-blah.cpp:321: Actions ran out in EXPECT_CALL(*mock_ptr,
some-function(,))... Called 2 times, but only 1 WillOnce() is
specified - returning directly.
我在什么都不做的部分执行什么操作才不会收到此警告?
some-function 是一个 void 返回函数。
谢谢!
// Code for the Expect Call
EXPECT_CALL(*mock_ptr, some-function(_,_)) .Times(2) .WillOnce(action1)
.WillOnce(Return());
// SUT call
ASSERT_NO_THROW(sut_function(arg1, arg2));
为第二个(或第一个).WillOnce 添加 Return() 解决了问题。参考github中的cheatsheet找到匹配的动作。
SUT 正在调用定义了 EXPECT_CALL 的外部库。 我只想在第一次调用该函数时做一些事情,而忽略其他时间做任何事情(但要检查它是否被调用了两次);反之亦然.. 即第一次调用时不执行任何操作,第二次调用时不执行任何操作。
// Code for the Expect Call
EXPECT_CALL(*mock_ptr, some-function(_,_)) .Times(2) .WillOnce(action1)
.WillOnce(do-nothing);
// SUT call
ASSERT_NO_THROW(sut_function(arg1, arg2));
忽略第二个(不执行任何操作)WillOnce,我收到如下 Gmock 警告:
GMOCK WARNING: test_blah-blah.cpp:321: Too few actions specified in EXPECT_CALL(*mock_ptr, some-function(,))... Expected to be called twice, but has only 1 WillOnce(). GMOCK WARNING: test_blah-blah.cpp:321: Actions ran out in EXPECT_CALL(*mock_ptr, some-function(,))... Called 2 times, but only 1 WillOnce() is specified - returning directly.
我在什么都不做的部分执行什么操作才不会收到此警告? some-function 是一个 void 返回函数。
谢谢!
// Code for the Expect Call
EXPECT_CALL(*mock_ptr, some-function(_,_)) .Times(2) .WillOnce(action1)
.WillOnce(Return());
// SUT call
ASSERT_NO_THROW(sut_function(arg1, arg2));
为第二个(或第一个).WillOnce 添加 Return() 解决了问题。参考github中的cheatsheet找到匹配的动作。