2012-03-21 11 views
0

メソッドにラップされていないテストするコードがあります。 Rubyクラスでは単独で動作します。RSpecで実行コードをテストする

begin 
    # Do stuff - bunch of Ruby code 
end 

これはRailsアプリではありません。それはスタンドアロンのRubyクラスです。私はrspecテストでbegin begin文全体を実行したくありません。このようなことをどうやってテストしますか?モック/スタブを使用して行う必要がありますか?私はいくつかの人に尋ねたが、答えも知らなかった。

+1

メソッドの一部をテストしたくない場合は、メソッドを2つ(またはそれ以上)のメソッドに分割する必要があります。 –

+0

ああ、これは方法ではありません。それは、コードがラップされているファイルの終わりのちょうど始まりの終わりのステートメントです。つまり、次のようなものです:Rubyコードの終わりを始める –

+0

何かをコードの単位にしたくない場合は、コードの単一の単位。 –

答えて

1

メソッドやモジュールでビヘイビアーをカプセル化することができれば、テストするのが簡単だが、実際に実行しようとしているコードによって異なります。コードがパブリックな方法でクラスを変更すると、クラスがメモリ内で期待どおりに動作することを確認してテストを書くことができます。たとえば、

class Foo 
    attr_accessor :bar 
end 

describe Foo 
    it "should have an attr_accessor bar" do 
    foo = Foo.new 
    foo.bar = "baz" 
    foo.bar.should == "baz" 
    end 
end 

プライベートな方法でクラスを変更すると、これは難しくなります。

私は過去にこの種の動作を明示的に呼び出すことができるメソッドに書き換えることで幸運を祈りました。テストをより簡単にするだけでなく、問題をトラブルシューティングするときにタイミングを理解するのがずっと簡単になります。たとえば、

class Foo 
    def self.run 
    # do stuff 
    end 
end 

あなたはあなたのクラスで何をしようとしているのか少し詳しく説明できますか?

+0

私はbegin文とend文の間でたくさんのファイル操作をしようとしています。したがって、ファイルが存在するかどうかを確認しています。存在する場合は、コードの一部を実行して、存在しない場合は別のコードを実行します。 –

関連する問題