Попробую воспроизвести пример...
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, метод (сопоставители))
.With(multi_argument_matcher) ?
.Times(мощность) ?
.InSequence(последовательности) *
.После(ожидания) *
.WillOnce(действие) *
.WillRepeatedly(действие) ?
.RetiresOnSaturation(); ?
EXPECT_CALL(*mock, doSomething)
, которое будет использоваться, когда вектор (переданный в качестве аргумента doSomething) не пуст? - person Michał Walenciak   schedule 26.05.2020