テストのためのモック生成マクロ - モック生成の理想とマクロによるアプローチを徹底検証! by Kiichi

iOSDC Japan 2024
レギュラートーク(20分)

テストのためのモック生成マクロ - モック生成の理想とマクロによるアプローチを徹底検証!

KeyNumberLV Kiichi KeyNumberLV
2

ユニットテストを書く際、依存先としてモックを使用することがありますよね。
みなさんは、どのようにモックを作成していますか?

手作業で1つ1つ作成することもあれば、mockoloなどの自動コード生成ツールを使うこともあるでしょう。
加えて最近では、swift-spyableなどのマクロを用いたモック生成ライブラリも開発されており、それらを使っている方もいるかもしれません。

しかし、これらのライブラリには以下のような課題が存在します。

  • 同名関数をモックできない
  • 少しの記述ミスでテストがクラッシュして修正に時間がかかる
  • モックした関数の挙動を途中で変えるのが難しい

このような課題を踏まえ、今回の発表では、

  • モック生成とはどうあるべきか?
  • なぜ/どうやってマクロで実現するのか?

を中心に、テストのためのモック生成マクロにおける理想を追求してみます。

また、具体的な実装例・使用例を交えながら

  • マクロで実現できること/できないこと
  • 設計方針の提案と比較

についても考察し、これらの理想の実現を目指します。