2/21に株式会社ヒトメディアさんのthe p@rkでSymfonyもくもく会#4を開催しました。 もくもく会の詳しい内容はSymfonyもくもく会 #4 を開催しましたで確認いただければと思います。
さて今回僕は珍しくLTをしました。 コントローラのテストについてってタイトルで発表しました。 まあいつも通りうまくLTはできませんでしたが、やってよかったのかなぁとは思います。
なぜコントローラのテストについてという話をしたのか
僕は昔からテストが苦手で、とくにコントローラのテストなんて1行も書かないタイプでした。 しかし、転職を機にこのままではいけないと思ったのでコントローラのテストどう書こうか結構迷いました。
ユニットテスト的にモックを使ってコントローラのテストをしたかったんですが、すごく悩みました。
どうやろうかと悩んだ末に出した答えとしてコントローラは継承しない
って結果にたどり着きました。
というか、@hidenorigotoさんにコントローラは継承しなくてもいいということを教わりました。
メソッドの責務が見えてくる気がした
テストをちゃんと書いていると、テスト対象のオブジェクトで必要な機能が見えてくるってことが多々あります。
ちゃんと設計できる人ではない僕にとってはこれがすごく大きいです。
テスト書いてて、書きにくなぁーとか、書くのだるいなぁーとか思うことがあると思います。 しかしそれは、テストが悪いわけではありません。「実装が悪い」だけです。 そこから、テストが書きやすいように修正していくと、自ずとオブジェクトがすっきりしてきます。 なんというか、ちょっと感覚的なんですが、そんな感じです。
まさにこれがテストの声を聞け
ってことなんだと思います。
ちなみに前職の上司がテストの声を聞け
って言っていたんですが、最近わかってきた気がします。
JMSDiExtraBundle
これはもくもく会#03で教えてもらったんですが、JMSDiExtraBundleはコントローラを継承しない場合に非常に便利です。
コントローラの継承云々の前に使うべきだと思いました。
最後に
一個悔しかったのが、コントローラを継承しなくてもなぜコントローラが呼び出されるのかって事を説明できない自分がいました。
もっともっとsymfonyのコードを読まなければいけないと反省しています。
でも、小さいことでもいいから、LTしていく事は、その題材に対してすごく考えるのですごく良いことだと思います。
来月も何かネタを見つけてLTをしたいと思います。
また、次回はスタッフ以外でLTしてくれる人が出てくるといいなーなんて思っているので、皆さん気軽に参加してバンバンLTしてください。