Задать вопрос
max_dark
@max_dark
Диванный эксперт

Как в Google Mock задать последовательность вызовов?

Пишу тесты для Callback objects(Command pattern).
Мне нужно проверить, что два метода вызываются перед третим и передают в него ожидаемые значения.
Причем первые могут быть использованы в любом порядке.
Как пример: чтение двух значений -> вычисления -> возврат результата.

Сейчас я могу только жестко задать последовательность, хотя перестановка вызовов местами ошибкой не является.

Пример кода:
MockVM mockVm;
Sequence csr;

EXPECT_CALL(mockVm, get_control(csr_id, _))
                    .InSequence(csr)
                    .WillOnce(SetArgReferee<1>(csr_val));
EXPECT_CALL(mockVm, get_register(src))
                .InSequence(csr)
                .WillOnce(Return(src_val));

EXPECT_CALL(mockVm, set_control(csr_id, expected_csr_value))
                .InSequence(csr);
impl->exec(&mockVm, &code);

Здесь get_control и get_register могут быть вызваны в любом порядке.

Как это можно описать в gMock?

Как в gMock проверить что метод НЕ вызывается?
  • Вопрос задан
  • 37 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Furax
Для проверки последовательности вызовов вам нужен метод (или часовой) InSequence.

Для проверки, что метод не вызывается, можно сделать EXPECT_CALL(...).Times(0).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы