Итак, у меня есть функция, скажем, WriteHW (значение), которая обычно пишет на аппаратный UINT32, но я издеваюсь.Я хочу передать входные данные этой фиктивной функции и передать их в действие ASSIGN, чтобы присвоить это значение локальной переменной самого теста.Таким образом, я могу проверить, что записываемое значение (обычно с помощью битовых манипуляций) является правильным, что-то вроде эмуляции аппаратного хранилища.
Таким образом, мой параметр 4 является входом, который «записывается» в мое фиктивное оборудование (regStorage)переменная).
В основном мое ожидание Mock выглядит следующим образом
EXPECT_CALL(cAdapterMock, ReadByPort(_, _, _, _, _))
.Times(1)
.WillRepeatedly(DoAll(::testing::Assign(®Storage, WHAT-DO-I-PUT-HERE-TO-GET-ARG4-THAT-CAME-INTO-READ-BY-PORT),::testing::Return(0)));
Я пытаюсь выяснить, как я получаю arg4, который поступил в ReadByPort, чтобы я мог поместить его во второй параметр Assign, чтобы получитьон вставил в regStorage.
Я успешно использовал макрос ACTION для получения значения arg4, но это кажется действительно глупой механикой, поэтому я предполагаю, что должен быть более простой способ.
ACTION(GetWrittenMauiRegister) { return arg4; }
EXPECT_CALL(cAdapterMock, ReadByPort(_, _, _, _, _)) // #3
.Times(1)
.WillRepeatedly(DoAll(::testing::Assign(®Storage, (UINT32)GetWrittenMauiRegister),::testing::Return(0)));
Спасибо!