我开始将 CppUTest 用于一些 C 嵌入式项目。现在我正在处理对系统的模拟调用。在学习了如何传递 C 典型类型之后,例如:
正常工作的示例:
模拟文件部分代码:
uint32_t LL_TIM_GetPrescaler(TIM_TypeDef * TIMx){
mock().actualCall("LL_TIM_GetPrescaler");
return mock().unsignedIntReturnValue();
}
与此模拟调用相关的测试文件部分代码:
TEST (HAL_AS393,HAL_AS393x_Init_test)
{
...
mock().expectOneCall("LL_TIM_GetPrescaler").andReturnValue(TEST_PRESCALER_VALUE);
//being TEST_PRESCALER_VALUE an int initialized variable before
...
}
理解这一点对我来说没有问题。
但是现在我试图将一个结构从测试传递给一个模拟调用,其中包含我希望模拟发送到调用函数(被测生产代码)的所需字段列表。该案例正在使用一些系统调用来测试一个函数。这件事就像:
正在测试的一段代码:
//struct type definition
typedef struct
{
bool_t WAKE_FLAG;
bool_t DATA_READ_FLAG;
}HAL_AS393X_Status;
//function under test
RFIDDrvStatus RFID_DRV_GetStatus(void)
{
HAL_AS393X_Status HAL_Status;
...
HAL_Status=HAL_AS393x_GetStatus();
...
}
现在的想法是 -在我使用模拟的测试文件中- :
TEST(RFID_Drv,RFID_DRV_GetStatus_test )
{
HAL_AS393X_Status FAKE_HAL_STATUS;
FAKE_HAL_STATUS.WAKE_FLAG=TRUE;
FAKE_HAL_STATUS.DATA_READ_FLAG=TRUE;
...
mock().expectOneCall("HAL_AS393x_GetStatus").andReturnValue(FAKE_HAL_STATUS);
...
}
我的问题是,我如何构建这个 mock.expectOneCall("HAL_AS393x_GetStatus") 的 mock.actualCall 才能说它必须返回一个定义的类型结构(HAL_AS393X_Status)?如果可能或如果存在,我正在搜索信息以执行此类操作:
mock().actualCall("HAL_AS393x_GetData");
return mock().XXXReturnValue();`
什么模拟语法必须在 XXX 地方?