2025/09/02

単体テストのモックとスタブとドライバー

単体テストのコードを書いていると、モックだとかスタブだとかドライバーだとか、そういう言葉はほとんど出てこない。

出てこないというか、テストしたい関数があって、テストする関数があって、テストしたい関数が呼び出している関数があると、

  • テストをするのに効率的なフレームワークがほしい
  • テスト対象が呼び出している関数が勝手に動くと面倒なので、偽物を作ってテスト目的に合わせて自由に作り替えたい 

というような要望が出てくる。
この要望は自然と湧いてくるので、いちいち名前を付けなくてもなんとかなる。
作業場で「スタブ」しか使っていなかったので、私は今でも曖昧に使っている。


気になったのは、これは誰が用語定義したのだろう?ということだ。
手元にある応用情報2024年のテキストを見てみると「スタブ」と「ドライバ」はあったが「モック」は載っていない。この本によると「スタブ:テストモジュールの下位モジュールの機能をシミュレーションする」「ドライバ:テストモジュールの上位モジュールの機能をシミュレーションする」とあった。
検索で「基本情報 モック」や「応用情報 モック」としてもそれっぽいのは出てこない。

    何でも"モック"と呼んでない?mock, stub, fake, dummy, spyの違い

Jest だと spy ってのがあった。
fff は fake function だ。
ただなんとなく、ライブラリとかでは CMock みたいにモックがよく使われているような気がする。

しかしまあ、定義があろうがなかろうがやりたいことは決まっているのだから、現場では適当に用語を決めて間違った認識をしないように統一しておけばいいんじゃなかろうか。
 

私はどうしようか。
応用情報の本にあった定義だと上か下かしかないので簡単だ。上位モジュールのシミュレーションって、単体テストだとテスト関数がやることじゃないの? あるいはコールバックで呼び出す関数も含まれる?
それさえなければ「スタブ」になる。

シンプルすぎるが、以前の作業場が「スタブ」だけだったのもこの定義から来たんじゃなかろうか。少なくとも間違った定義ではないから、もうそれでいいや。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。