Mock non-virtual method C++ (gmock)

后端 未结 3 2012
逝去的感伤
逝去的感伤 2020-12-08 08:01

I have class

class CSumWnd : public CBaseWnd
{

 private:
 bool MethodA()
}

Please can you help how to mock MethodA() without

3条回答
  •  不思量自难忘°
    2020-12-08 09:07

    It means you will have to templatize your production code. Using your example:

    CSumWind class definition:

    class CSumWnd : public CBaseWnd
    {
    
     private:
     bool MethodA()
    };
    

    Mocked CSumWnd class definition:

    class MockCSumWnd : public CBaseWnd
    {
    
     private:
     MOCK_METHOD(MethodA, bool());
    };
    

    Production class which have to be tested with mocked class CSumWind. Now it becomes templated to provide using CSumWind class in production code and MockCSumWnd class in tests.

    template 
    class TestedClass {
    //...
       void useSumWnd(const CSumWndClass &a);
    
    private:
      CSumWndClass sumWnd;
    };
    

    Instantiation of TestedClass in production:

    TestedClass  obj;
    

    Instantiation of TestedClass object in test executable:

    TestedClass  testObj;
    

提交回复
热议问题