我想在每次调用mock函数时执行一个动作。我尝试使用ACTION_P实现这一点。请参阅以下代码:
ACTION_P(CompleteRegistrationWithStatus, status)
{
arg1->registrationCompleted(status);
}
期望如下:
EXPECT_CALL(*mockObj, register(_)).WillOnce(CompleteRegistrationWithStatus(success));
问题是,我不得不多次使用相同的期望,只是不同的状态。所以我需要将期望放在测试夹具的成员函数中,以避免代码冗余。但是该函数无法访问我定义的ACTION_P,因为它不是fixture的成员。
我尝试搜索作为夹具成员的ACTION,就像MATCHER的那样,但无济于事。
对可能的解决方案或替代方案的任何建议?任何形式的帮助都非常感谢。 TIA!
答案 0 :(得分:0)
我不确定我是否理解将期望放在灯具的成员函数中的必要性,但您应该能够使用InSequence获得所需的行为:
{
InSequence s;
EXPECT_CALL(*mockObj, register(_))
.WillOnce(CompleteRegistrationWithStatus(success));
EXPECT_CALL(*mockObj, register(_))
.WillOnce(CompleteRegistrationWithStatus(failure));
}