我只想在我的一个测试用例中覆盖ON_CALL默认操作。但是我不能得到我想要的结果。
根据gMock Cookbook,它提到如果存在匹配的EXPECT_CALL,则可以替换ON_CALL默认操作。
但是,在Insequence子句中覆盖它似乎不起作用。
void SetUp()
{
ON_CALL(mock, GetNumofChild()).WillByDefault((Return(2));
/*other on_call defaults*/
}
TEST_F(Testing, TestGetValue){
{
testing::InSequence seq;
/* other expect_call */
EXPECT_CALL(mock, GetNumofChild()).WillOnce((Return(10));
/* other expect_call */
}
Foo();
}
运行时期间
uint8 u8NumOfChild = m_obj.GetNumofChild();
// Result: u8NumOfChild equal to 2, result by ON_CALL
// Expected: u8NumOfChild equal to 10, overridden by EXPECT_CALL
1条答案
按热度按时间plicqrtu1#
回答我自己的问题,因为我找到了它的根本原因。
由于EXPECT_CALL是按顺序执行的,因此不满足先前的顺序EXPECT_CALL。因此不调用“预期”EXPECT_CALL,而是调用ON_CALL默认操作。