C++ Google单元测试期望从exposer调用该方法

C++ Google单元测试期望从exposer调用该方法,c++,unit-testing,googletest,C++,Unit Testing,Googletest,我正在尝试调用当前调用的受保护方法的EXPECT\u call。我已经创建了此方法的公开程序。然后,我在mock中添加了一个来自exposer的方法 TEST_F(ExposureGainController_Test, SetScale_call_SetExposureGain) { TEST_DESCRIPTION("Check logic behind SetScale and auto call of SetExposureGain. "); ExposureGainCo

我正在尝试调用当前调用的受保护方法的
EXPECT\u call
。我已经创建了此方法的公开程序。然后,我在mock中添加了一个来自exposer的方法

TEST_F(ExposureGainController_Test, SetScale_call_SetExposureGain)
{
    TEST_DESCRIPTION("Check logic behind SetScale and auto call of SetExposureGain. ");
    ExposureGainControllerExposer c(camMock, scaleFunctionMock,
        std::unique_ptr<IMicroscopeOpticsParameters_ImageBrightness_Model>(new ImageBrightness_Model_Mock(0.5)));
    EXPECT_CALL(*camMock, RunSetExposureGain()).Times(1);
    c.SetScale(5.0);
}
//SetScale函数如下所示:

void ExposureGainController::SetScale(double scale)
{
    if (m_scale != scale)
    {
        m_scale = scale;
        m_gainInDb = ScaleToGainInDb(m_scale);
        UpdateResidualScale();

        SetExposureGain();
    }   
}
我正在尝试执行
EXPECT\u CALL
,但无法正确运行它


我做错了什么?

你说的“我不能正确地运行它”是什么意思?添加你的
SetScale
方法。啊,我可以运行它,但它没有调用提供的信息,看起来你的expect调用是错误的。您正在从测试中调用SetScale方法,并希望调用RunSetExposureGain。这似乎没有发生。
void ExposureGainController::SetScale(double scale)
{
    if (m_scale != scale)
    {
        m_scale = scale;
        m_gainInDb = ScaleToGainInDb(m_scale);
        UpdateResidualScale();

        SetExposureGain();
    }   
}