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警告:test_blah-blah.cpp:321:在中指定的动作太少 EXPECT_CALL(* mock_ptr,一些功能(,))...预计会被调用 两次,但只有1个WillOnce()。 GMOCK警告: test_blah-blah.cpp:321:操作在EXPECT_CALL(* mock_ptr, some-function(,))...调用了2次,但是只有1个WillOnce() 指定-直接返回。
我该采取什么措施才能避免收到此警告? some-function是一个无效的返回函数。
谢谢!
答案 0 :(得分:0)
// 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));
为第二个(或第一个)添加 Return()。WillOnce解决了该问题。请参阅github中的cheatsheet来找到匹配的动作。