В Mockito мы можем указать несколько возвращается как (из here):Как указать последовательные возвращения в gmock?
//you can set different behavior for consecutive method calls.
//Last stubbing (e.g: thenReturn("foo")) determines the behavior of further consecutive calls.
when(mock.someMethod("some arg"))
.thenReturn(new RuntimeException())
.thenReturn("foo");
//There is a shorter way of consecutive stubbing:
when(mock.someMethod()).thenReturn(1,2,3);
when(mock.otherMethod()).thenThrow(exc1, exc2);
Есть ли способ, чтобы указать несколько возвращения для макета сделан с gmock? В настоящее время у меня есть:
store_mock_ = std::make_shared<StorageMock>();
ON_CALL(*store_mock_, getFileName(_)).Return("file1").Return("file2");
, который не компилируется, потому что я не могу найти несколько возвратов в gmock. Возможно ли это с помощью gmock? Если нет, есть ли другой способ решить эту проблему? Я обнаружил, что мы можем нравится EXPECT
несколько возвращаемых значений:
using ::testing::Return;...
EXPECT_CALL(turtle, GetX())
.WillOnce(Return(100))
.WillOnce(Return(200))
.WillOnce(Return(300));
Однако, я не нашел каких-либо документацию для издеваясь нескольких возвращается с ON_CALL
.
Мое понимание ожиданий что они - то, что мы ожидаем вернуть, а не то, что на самом деле должно быть возвращено макетом. Это неправильно? Пример 'IncrementDummy' действительно полезен. Kinda сосет, что лучший способ определить несколько возвратов настолько вовлечен. :( –
Если я правильно вас понимаю - тогда да. Мой пример очень искусственный - мы никогда не проверяем утверждением, что возвращает mocks - я просто пишу этот тест, чтобы показать, что этот механизм работает. Более общий мы можем сказать, что 'EXPECT_CALL'is для случаи, когда мы ожидаем, что вызванная функция вызвана из проверенного кода. Нет необходимости устанавливать «возвращаемое значение» - например, довольно часто мы ожидаем, что функция void будет вызвана .... – PiotrNycz