gpt4 book ai didi

unit-testing - Gmock 的 EXPECT_CALL 中是否有 类型的操作?

转载 作者:行者123 更新时间:2023-12-05 03:03:54 26 4
gpt4 key购买 nike

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.

我在什么都不做的部分给出什么 Action 才不会收到这个警告?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() 解决了问题。简称cheatsheet在github中找到匹配的 Action 。

关于unit-testing - Gmock 的 EXPECT_CALL 中是否有 <Do-nothing> 类型的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53393229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com