我将尝试重现一个示例...
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(); ?
我在文档中找到此答案