首页 > 解决方案 > GTEST:实际函数调用计数与 EXPECT_CALL 不匹配

问题描述

我正在 gtest 中学习 GMock。我有以下情况

class Observer 
{
public:
   virtual void StartObserver(const std::string&, const int&) { }
};

class MockObserver : public Observer
{
public:
    MOCK_METHOD2(StartObserver, void(const std::string &, const int &));
};

class Worker
{
private :
    std::shared_ptr<observer> mObserver = nullptr;
public :
    void StartObserver(const std::string& str, const int& val)
    {
        mObserver->StartObserver(str, val);
    }
    void RegisterObserver(std::shared_ptr<Observer> observer)
    {
        mObserver = observer;
    }
};

在我的测试功能中,我进行了如下测试

TEST_(AppTest, Test_Observer)
{
    Worker w;
    std::shared_ptr<MockObserver> mockObserver = std::make_shared<MockObserver>();
    
    w.RegisterObserver(mockObserver); //instead of actual ObserverObject I passed mockObserver here 
    EXPECT_CALL (*mockObserver, StartObserver(_, _)).Times(1).WillOnce(::testing::Return());;
    w.StartObserver("hello", 100);
}

在运行 gTest 时,我在此测试中遇到错误

Actual function call count doesn't match EXPECT_CALL(*mockObserver, StartObserver(_, _))...
         Expected: to be called once
           Actual: never called - unsatisfied and active

我的代码有什么问题吗?

标签: unit-testinggoogletestgmock

解决方案


推荐阅读