最近、テスト駆動開発のトピックを読んでいて、必要なセンサードライバーを試してみることにしました。センサーはSPIインターフェイスを使用しており、プロジェクト生成のためにCubeMXの助けを借りてこのドライバーをSTM32F415プロセッサーに実装します。プロジェクトを生成した後、HALにアクセスできますSPI関数このような:
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)
'sensor_hall.h'というヘッダーファイルを作成し、これにSPI関数宣言を入れてから、CMockを使用してこのヘッダーのモックを生成します。
私の質問は、これは有効なアプローチですか?これにさらに抽象化を導入する必要がありますか?そして、最初の引数、モックするときのSPI structへのポインタ)をどのように扱うか?
あなたの本能は正しく、あなたは有効なアプローチを提案しています。ここでミックスに抽象化を追加する必要はありません。
Spi構造体(へのポインター)を取得するHAL_SPI_ *関数もあると想定すると、モックに役立つメンバーを含む、spi構造体のモック固有バージョンを使用できます。
Spi構造体をクライアントコード(センサードライバー)で直接宣言する必要がある場合は、一貫して同じポインターが渡されることをモックで確認します。