我如何设置使用gmock框架通过引用发送的参数?

问题描述 投票:1回答:1

我将尝试重现一个示例...

class Object{
     public:
     Object(){}
     virtual void doSomething(vector<int>& x) {x.push_back(14);}
     virtual int foo(){return 0;} 
};

class ObjectMock : public Object
{
    public:
    MyMock(){}
    ~MyMock(){}
    MOCK_METHOD1(doSomething, void(std::vector<int>&));
    MOCK_METHOD0(foo, int());
};

class MyClass{
    public:
    Object* _obj;
    MyClass(){
        _obj = new Object;
    }
    void func()
    {
        int error = _obj->foo();
        if(error == 0)
        {
           int result;
           _obj->doSomething(result);
           if(result.size())
           {
               //the code where I'm trying to cover 
           }
        }
    }
};    
int main()
{
    //test 
    MyClass *item = new MyClass;
    ObjectMock* mock = new ObjectMock;
    item->obj = mock;
   //test for function foo 
   EXPECT_CALL(*mock, foo).WillOnce(Return(1));
   //this is my problem
   EXPECT_CALL(*mock, doSomething)//. What????
   item->func();
}

我如何如上所述更改输出,同时牢记参考输出? 我希望该向量中至少包含一个元素。

我试图查看gmock的文档。我发现的一切

EXPECT_CALL(mock_object,method(matchers))

。With(multi_argument_matcher)?

。Times(cardinality)?

。InSequence(sequences *

..之后(期望)*

。WillOnce(action)*

。WillRepeatedly(action)?

.. RetiresOnSaturation(); ?

c++ unit-testing testing gmock
1个回答
0
投票

我在文档中找到此答案

© www.soinside.com 2019 - 2024. All rights reserved.