自定义ACTION作为夹具成员 - 谷歌测试

时间:2014-10-05 16:21:19

标签: c++ googletest googlemock

我想在每次调用mock函数时执行一个动作。我尝试使用ACTION_P实现这一点。请参阅以下代码:

ACTION_P(CompleteRegistrationWithStatus, status)
{
    arg1->registrationCompleted(status);
}

期望如下:

 EXPECT_CALL(*mockObj, register(_)).WillOnce(CompleteRegistrationWithStatus(success));

问题是,我不得不多次使用相同的期望,只是不同的状态。所以我需要将期望放在测试夹具的成员函数中,以避免代码冗余。但是该函数无法访问我定义的ACTION_P,因为它不是fixture的成员。

我尝试搜索作为夹具成员的ACTION,就像MATCHER的那样,但无济于事。

对可能的解决方案或替代方案的任何建议?任何形式的帮助都非常感谢。 TIA!

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解将期望放在灯具的成员函数中的必要性,但您应该能够使用InSequence获得所需的行为:

{
    InSequence s;
    EXPECT_CALL(*mockObj, register(_))
        .WillOnce(CompleteRegistrationWithStatus(success));
    EXPECT_CALL(*mockObj, register(_))
        .WillOnce(CompleteRegistrationWithStatus(failure));
}