# How to mock

モックライブラリを作成済の場合に、モック関数を追加する手順を示す。

ここで指すモックとは、テストダブルの一般名としての意味であり、実装内容によってダミー、スタブ、スパイ、モック、フェイクなど詳細は決定される。 参考: これで迷わないテストダブルの分類(ダミー、スタブ、スパイ、モック、フェイク)

# 1 ヘッダを作成

- モックライブラリのヘッダ (サンプルファイル) に、メソッド定義 (コンパイル時に google mock によって関数定義に変換される) を追加。
- 必要に応じ、呼び出し時の stdio 出力などをテストモジュールから制御するための変数定義を追加。

    MOCK_METHOD(int, samplelogger, (int, const char *));

# 2 mock 関数を作成

- モックライブラリのクラスの実装に、デフォルトの呼び出しに対する処理内容を実装。
  デフォルトの呼び出しに対する処理内容は記載を省略したり各テストで定義することも可能だが、きちんと実装するほうが好ましい。
- モックライブラリフォルダに、関数本体 (サンプルファイル) を作成。

    ON_CALL(*this, samplelogger(_, _))
        .WillByDefault(Invoke([](Unused, const char *str)
                                { return strlen(str); })); // NOTE: Unused を使うと未使用パラメータの警告を避け、かつ、未使用である旨が明確になる