Open9
テストのないコードをなおす

このカンファレンスを聞いて

fat controller
public function handler(){
}
こいつの動作確認のためテストを書きたかった。
ただ、この関数の中で複数の処理を実行しているため、網羅できない。
加えて、apiからデータを取得しているためランダム性を持っている。

最初はtest_handlerなどと作っていたが、テストを作りづらい。
インアウトを明確にしよう。、

handler()の中身はざっくり以下の流れ。
- プロセスの管理
- apiの実行
- apiの結果を加工
- apiの加工結果をdbに保存
- プロセスの完了処理の追加
apiの実行は外部に影響受けるため分ける。
まずなんにせよapiからデータを取ってこよう。。
ということでその関数をコピペして作成する。

の前に、この処理の実行保証をテストしておく。
handler()の実行結果がexit 0となるかどうかのテストを書いておく。

通過する最も簡単なテスト(Happy path)によって、実行を自動化できる。
これが落ちたらエラーだということで、変更のたびに雑に実行していこう。

ついで、機能のスコープであるdb保存を実現する。
そのための関数を作成する。
public function saveDatabase($apiResult){
}
引数にはapiの戻り値を入れたい。

ちょっとまてよ。dbにはどういうカラムに保存するんだ?
rest clientでapi仕様を確認する

なるほど。jsonだなあ。まずテーブルとカラムを作ろう。一旦これで。
でそうなると、カラム名とテーブルの戻り値を加工する処理を作らないとね。そして、それっぽい処理は見つかった。
というわけで、ここは一旦置いておき、変換する処理を作ろう。
public function convertColumn($apiResult)
{
}