花火打ち上げシステムをコードで作成しながら test doubles について理解を深めるワークショップです。
下記の仕様に沿ってシステムを作成していきましょう。
天気APIが名古屋市は「晴れ」という結果を返した場合、"花火を打ち上げました"という文字列が返ってくる。
天気APIが名古屋市は「雨」という結果を返した場合、"花火の打ち上げは延期です"という文字列が返ってくる。
ここで確認したいのは間違ったパスワードを渡したとき、花火が打ち上がらないこと。
パスワードが正しければ花火打ち上げロジックが呼ばれていること。
パスワードが間違っていれば花火打ち上げロジックが呼ばれていないこと。
パスワードが正しければ花火打ち上げロジックを呼ぶこと&無効化ロジックを呼ばないこと。
パスワードが間違っていれば花火打ち上げロジックを呼ばないこと&無効化ロジックを呼ぶこと。
認証されたユーザーが実行していれば花火打ち上げロジックが呼ばれる。
認証されたユーザーでなければ花火打ち上げロジックが呼ばれない。
(花火打ち上げシステムの仕様が気になるかもしれませんが、test doubles を説明するためのものです。)
上記の花火打ち上げシステムには仕様がいくつかあり、
1つずつ確実に仕様確認をするとなると、開発過程で何発も花火を打ち上げなければ開発ができない。
開発のために何発も花火を打ち上げてたら勿体無いし、自治体への許可が毎回必要になる。
そこで Test Doubles が登場!
Test Doubles を使用することで花火を打ち上げずに、 機能一つずつ確実に仕様確認(テスト)ができる。
Test Doubles を用いて花火打ち上げシステムのコードを書くことで、
dummy, stub, spy, mock, fake それぞれの役割について理解していこう!