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 …
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部分をクラス化して、injectするように. いつもの見慣れた構造.こっちのほうが読みやすいし、テストし易い. Spyというキーワードを使ったのは、Test Spy at XUnitPatterns.comを参考に. set_uiよりinject_uiを使ったのは、師…
コラボレーションテストで、テスト対象のクラスにincludeされたメソッドをモック化する際 Dependency Injectionでやろうとするのはなんか手間だなと思って、前回はテスト対象のクラスに手を加えて逃げた. 今回は別解でオープンモジュール??(オープンクラ…
RSpecのソースを参考に、練習で書いたspec. どちらかというと、全体のパスを通すテストだが、GUI部分はメソッドオーバライドで逃げた. Ruby + RSpecだと it shouldの部分が、かなり簡潔にかける。 3〜4行に収めようとするフォースをRSpecに感じとれた!! r…
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.…