2011-02-05 9 views
2

rspecでテストするときに、どの引数がメソッドに渡されているかを確認することはできますか?Rspecのテスト引数?

クラスAをテストする、つまりクラスAを呼び出したい場合は、クラスBを呼び出します.Bは既にテスト済みです。私がテストしたい 唯一のことは、私はB.callingに入ってくる引数をテストするにはどうすればよいB.

class A 
    def method 
    number = 10 
    B.calling(number) 
    end 
end 

class B 
    def self.calling(argument) 
    # This code in this class is already testet 
    end 
end 

に入ってくる引数はありますか?

答えて

2

あなたが使用している場合RSpecのモック/スタブが

B.should_receive(calling).with(10) 

http://kerryb.github.com/iprug-rspec-presentation/を試すには、基本的な使用の多くをカバーし、またはドキュメントまたはRSpecのブックを参照してください。

+0

'calling'が静的メソッドでない場合はどうすれば解決できますか? – Oleander

+0

should_receiveはオブジェクトの拡張です(私は思うので)、クラスとインスタンスはまったく同じです。これは、呼び出されたかどうかを追跡するコードでメソッドをスタブすることによって機能します。だからあなたはあなたのオブジェクトインスタンスを設定し、コールは同じ方法でそれを受け取るべきです。また、さまざまな種類のマッチャー(例えば、引数は文字列、整数、偶数など)、呼び出された時刻、同じオブジェクト上の同じメソッドへの異なる呼び出しの順序などを見ることができます。 – nruth

+0

'' calling'をそのクラスのインスタンスに 'should_receive'を設定する必要があるインスタンスです。 [mock_model and stub_model](https://www.relishapp.com/rspec/rspec-rails/v/2-9/docs/mocks)にも興味があります。 –