Translate

2015/10/08

RSpec テストのリファクタリング

RSpec をうまく使って、もう少しテストコードを良くした。

入力を多次元配列にする

多次元にしておくと、何かと便利。(経験上)
うまく初期値付きにすることが難しかったけど、最終的には、
   test_item = [\
      [1, 1, 1, "正三角形ですね!"],\
      [2, 2, 2, "正三角形ですね!"]\
    ]
これでOK.

http://canelmo.hatenablog.jp/entry/2015/01/14/184939

見やすくする

Subjectとか使う。

まとめると、
なるべく、Describe, Before, Subjectを使って明確化する。
なるべく、expectを使う。(shouldは古い文法?だけど、未だに使い勝手で混在しているみたい)

例 名前なし:
subject {Triangle.shape_is(1, 1, 1) }
it { except(subject).to eq "正三角形"}
it { excepted.to eq "正三角形"}  # 同じ意味

例 名前あり:
subject (s) {Triangle.shape_is(1, 1, 1) }
it { except(s).to eq "正三角形"}

だけど、一般的に引数があるfunctionをsubjectにするのは難しいみたいなので、クラスをSubjectにするのが無難っぽい。

参考



おまけ

Rubyで行をまたぎたい場合は、"\" だそうです。

DRYは、 Don't Repeat Yourself

0 件のコメント:

コメントを投稿