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