quattro_4 scribble

scribble 落書き (調べた事をただ落書きする)

RSpec 雑感

個人的にはあまり批評的なことは書かない。

最近RSpecについて気づいた事について

RSpecは表現力が豊かだと思う
うまく書けたときの満足感は非常にある

ただそのうまく書けたという感覚が、人によって全然違うと思った。

  • it "bla bla .." の部分にはshouldを入れるべきか、動詞をどのように使うべきか
  • describe/contextを必ず入れないといけないとか
  • subjectは??のようでなければいけない
  • letの使い方だったり

その豊かすぎる表現力があだとなって、チーム、プロジェクトの一貫性が失われやすい気がする

Railsが公式にRSpecを採用しない理由が、個人の憶測の域を出ないが分かったような気もする。

自分一人とか、ごく少人数のコードベースにはすごい向いているかもしれない。

TestUnitの場合は assert_~ みたいな感じで冗長に見えるかもしれないが、対象(subject)はたいがいインスタンス変数を中心に書かれるというように、一貫性は出やすいのではないかと思った

個人的な関心としては、

  • integration(acceptance)レベルのテストがあって、
  • CI(Jenkins)とかで管理されていれば特に不満はない
  • controller(functionals)テストは嫌い(上のレベルがあれば無くて良い)
  • mock, stubの使い過ぎは嫌い
  • キャッシュは(テスト関係ないかもしれないが)嫌い(SQLチューニングを差し置いて、キャッシュを使いまくるのは反対)

この辺がクリアされていれば特に不満は出ない

完璧なcontrollerテストがあってもユーザーはひょんな事でシステムエラーになることはある(shareされたpartialが一部壊れたり、テストは近いものはあるがmockされていてエラーが検出されていなかったり)

反対に、十分なacceptanceレベルがあったら、リリース時に祈る必要もないし、リリース後の予期しない不具合対応に追われる事も無いと思っている。 (「十分な」というのは完璧すぎると、コードのメンテナンス的な観点であまりよろしくないと実感している)