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)
{
}