RSpec

メルマガねた

ブロック先をモックにしてBehavior Verification. ブロックだと無名のメソッドになるから、名前の「do」が重要じゃなくなる。 class StringToSortedIntArrayFilter def run(message) yield(message.split(",").collect{ |node| node.to_i }.sort) end end de…

メルマガねた.代替案

(0..23).reject { |hour| hour == 9 or hour == 18 }.each { |hour| ... }全体を囲むのもありか.... class Greeting def say return "hello!" if Time.now.hour == 9 return "good bye!" if Time.now.hour == 18 "hay!" end end describe Greeting, "at …

Stub メルマガのネタ

Time.nowって書いても、stub!で乗っ取れるので心配無用. class Greeting def say return "hello!" if Time.now.hour == 9 return "good bye!" if Time.now.hour == 18 end end describe Greeting, "at 9:00" do before(:each) do Time.stub!(:now).and_retu…

結局、UI部分をモジュールをクラスに置き換えた.

前回までモジュールだったUI部分をクラス化して、injectするように. いつもの見慣れた構造.こっちのほうが読みやすいし、テストし易い. Spyというキーワードを使ったのは、Test Spy at XUnitPatterns.comを参考に. set_uiよりinject_uiを使ったのは、師…

open module による置き換え

コラボレーションテストで、テスト対象のクラスにincludeされたメソッドをモック化する際 Dependency Injectionでやろうとするのはなんか手間だなと思って、前回はテスト対象のクラスに手を加えて逃げた. 今回は別解でオープンモジュール??(オープンクラ…

RSpec学習

RSpecのソースを参考に、練習で書いたspec. どちらかというと、全体のパスを通すテストだが、GUI部分はメソッドオーバライドで逃げた. Ruby + RSpecだと it shouldの部分が、かなり簡潔にかける。 3〜4行に収めようとするフォースをRSpecに感じとれた!! r…

TextMateでRSpecを扱う設定

TextMateに RSpec操作を簡単にするBunldleがあるんだが、どうしても、specソースとlibソース間を簡単に行き来するコマンドが使えなかった. 今日、ようやく使えるようになった。以下に設定の覚え書き. ~Library/Application\ Support/TextMate/Bundles/以下…

復習

だめだ,ちゃんと英語勉強したほうがいいなぁ。 describe Array, "is empty" do before do @array = end it "should have 0 items" do @array.should have(0).items end it "should not find and result is nil when condtion is [e == 'node1']" do @array.…