いくつかの C 組み込みプロジェクトで CppUTest を使い始めています。今、私はシステムへの模擬呼び出しを扱っています。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 の場所だけに必要なモック構文は何ですか?